Liebe Smarthome-Freunde,
das Mail-Plugin in seinem jetzigen Zustand unterscheidet beim SMTP-Teil (den anderen habe ich nicht angeschaut) leider nicht zwischen SSL mit und ohne StartTLS, sondern setzt "ssl = True" mit "Schalte starttls ein" gleich. Das funktioniert z.B. mit GMail, aber nicht mit der SSL-Verschlüsselung von Strato auf Port 465.
Dabei handelt es sich nicht um eine Einschränkung von Python - das ganze ist einfach nicht im Mail-Plugin implementiert. Als schnellen Hack habe ich jetzt folgende Lösung bei mir gefahren:
Original:
Meine Version für Strato SSL ohne StartTLS:
Aber eigentlich sollte das Ganze konfigurierbar per plugins.conf sein. Die Frage ist jetzt, wie das am besten umzusetzen wäre. Mein Vorschlag wäre, einen zusätzlichen StartTLS-Parameter einzufügen (default: True), damit bisherige Installationen keine Probleme bekommen. Logik wäre dann:
Wenn (ssl == True) UND (starttls == True) DANN verwende smtplib.SMTP und danach smtp.starttls()
Wenn (ssl == True) UND (starttls == False) DANN verwende smtplib.SMTP_SSL
Wenn (ssl == False) DANN verwende smtplib.SMTP
Wäre das ok? Wie bringe ich das ein?
Viele Grüße
Gurkensalat
das Mail-Plugin in seinem jetzigen Zustand unterscheidet beim SMTP-Teil (den anderen habe ich nicht angeschaut) leider nicht zwischen SSL mit und ohne StartTLS, sondern setzt "ssl = True" mit "Schalte starttls ein" gleich. Das funktioniert z.B. mit GMail, aber nicht mit der SSL-Verschlüsselung von Strato auf Port 465.
Dabei handelt es sich nicht um eine Einschränkung von Python - das ganze ist einfach nicht im Mail-Plugin implementiert. Als schnellen Hack habe ich jetzt folgende Lösung bei mir gefahren:
Original:
Code:
def _connect(self): smtp = smtplib.SMTP(self._host, self._port) if self._ssl: smtp.starttls()
Code:
def _connect(self): smtp = smtplib.SMTP_SSL(self._host, self._port) # if self._ssl: # smtp.starttls()
Wenn (ssl == True) UND (starttls == True) DANN verwende smtplib.SMTP und danach smtp.starttls()
Wenn (ssl == True) UND (starttls == False) DANN verwende smtplib.SMTP_SSL
Wenn (ssl == False) DANN verwende smtplib.SMTP
Wäre das ok? Wie bringe ich das ein?
Viele Grüße
Gurkensalat