Mailversand klappt nicht

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
wonk
User
Beiträge: 18
Registriert: Mittwoch 15. November 2023, 21:29

Hallo,
ich versuche eine ganz einfache mail an mich selbst bei gmx zu schicken mit;

Code: Alles auswählen

import smtplib, ssl
SMTPServ = smtplib.SMTP('mail.gmx.net', 465)
SMTPServ.starttls()
SMTPServ.login('<mymail>', '<myPasswort>')
SMTPServ.sendmail('<mymail>','<mymail>','Testmail')
SMTPServ.quit()
print('Mail gesendet')
Das sollte doch eigentlich reichen!???
Statt der print-Anweisung bekomme ich:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/pi/mail.py", line 8, in <module>
    SMTPServ = smtplib.SMTP('mail.gmx.net', 465)
  File "/usr/lib/python3.9/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.9/smtplib.py", line 341, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.9/smtplib.py", line 398, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
Bei gmx ist POP und IMAP zugelassen.
Was bedeuten die Fehlermeldungen? - Sorry Python-dummy!
Danke!
Gruss, wonk
Gruss, wonk
Sirius3
User
Beiträge: 18245
Registriert: Sonntag 21. Oktober 2012, 17:20

wonk
User
Beiträge: 18
Registriert: Mittwoch 15. November 2023, 21:29

Hallo,
mit Port 587 bekomme ich:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/pi/mail.py", line 13, in <module>
    SMTPServ.sendmail('<maine mail>','<maine mail>','Testmail')
  File "/usr/lib/python3.9/smtplib.py", line 892, in sendmail
    raise SMTPDataError(code, resp)
smtplib.SMTPDataError: (554, b'Transaction failed\nReject due to policy restrictions.\nFor explanation visit https://postmaster.gmx.net/en/case?c=hi&i=ip&v=87.78.86.175&r=1M6UZl-1u6cOg1y4v-00Djlb')
Der Hinweis von GMX lautet:

Code: Alles auswählen

Please note that, if your email header is not RFC 5321 and RFC 5322 compliant, your message will be rejected by our system.
This includes the following:
    The following email headers included in your message must be syntactically correct: Date, From, Sender, To
    The following headers included in your email must be limited to just one each: BCC, CC, Date, From, Sender, Subject, To
Es fehlt also wohl das Datum. Wie bekomme ich das fachgerecht rein?
Gruss, wonk
Gruss, wonk
Benutzeravatar
sparrow
User
Beiträge: 4522
Registriert: Freitag 17. April 2009, 10:28

Es einfach wie in der Dokumentation erklärt machen.
wonk
User
Beiträge: 18
Registriert: Mittwoch 15. November 2023, 21:29

Hallo,
ich habe es jetzt durch ChatGPT hinbekommen:

Code: Alles auswählen

#!/usr/bin/env python3

import smtplib
from email.message import EmailMessage
import email.utils

# E-Mail-Inhalte
absender = "<meine mail>"
empfaenger = "<meine mail>"
betreff = "Testnachricht"
nachricht = "Testmail"

# Erstelle die E-Mail-Nachricht
msg = EmailMessage()
msg['From'] = absender
msg['To'] = empfaenger
msg['Subject'] = betreff
msg['Date'] = email.utils.formatdate(localtime=True)
msg['Message-ID'] = email.utils.make_msgid()
msg.set_content(nachricht)

# SMTP-Konfiguration
smtp_server = "mail.gmx.net"
smtp_port = 587
benutzer = "<meine mail>"
passwort = "<mein Passwort>"

# E-Mail versenden
try:
    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()  # TLS-Verschlüsselung aktivieren
        server.login(benutzer, passwort)
        server.send_message(msg)
        print("E-Mail erfolgreich gesendet.")
except Exception as e:
    print(f"Fehler beim Senden der E-Mail: {e}")
Gruss, wonk
Antworten