SMTP für Python — die Post Ihres Skripts oder Ihrer Django-App, die ankommt
Python bringt SMTP mit: Mit smtplib senden Sie eine Nachricht in wenigen Zeilen, und Django fasst das in einer eigenen Mail-Schicht mit EMAIL-Einstellungen zusammen. Was keines von beiden liefert, ist die Zustellbarkeit — die hängt vom Server ab, über den Sie senden.
Ob Sie ein eigenständiges Skript, eine Flask-App oder ein Django-Projekt haben: Die Einstellungen sind dieselben fünf Daten. Sie richten sie auf Ihr Relay, und der Code, der die Nachrichten baut, bleibt unverändert.
Warum es ohne Relay schiefgeht
Python-Post kommt oft aus dem Hintergrund: ein nächtlicher Bericht, ein Cron-Job, der Rechnungen versendet, ein Skript, das alarmiert, wenn ein Messwert aus dem Toleranzbereich fällt. Niemand schaut zu — und deshalb merkt niemand, dass der empfangende Server sie still abweist. Bei Django kommt die klassische Go-live-Überraschung hinzu: In der Entwicklung geht alles an die Konsole, in der Produktion an echte Anbieter, die Reputation sehr wohl prüfen.
SMTP in Python einrichten
Zugangsdaten abrufen
Melden Sie sich in Ihrem 2mail-Konto an und rufen Sie dort Ihren SMTP-Server, Benutzernamen und Ihr Passwort ab.
In Python eintragen
In einem Django-Projekt legen Sie die EMAIL-Einstellungen in den Settings fest: das SMTP-Backend als E-Mail-Backend, den Host des Relays, Port 587, die STARTTLS-Option aktiviert, Benutzername und Passwort sowie eine Standard-Absenderadresse auf Ihrer eigenen Domain. Wenn Sie direkt mit smtplib arbeiten, verbinden Sie sich mit dem Host auf Port 587, rufen starttls auf, melden sich mit Benutzername und Passwort an und senden dann die Nachricht. In beiden Fällen lesen Sie die Daten aus Umgebungsvariablen, nicht aus dem Code.
Domain authentifizieren
Sorgen Sie dafür, dass SPF, DKIM und DMARC für Ihre Domain korrekt gesetzt sind, damit Empfänger verifizieren können, dass die Mail von Ihnen stammt.
Testen
Senden Sie eine Testnachricht an eine Adresse bei einem großen Provider und prüfen Sie, ob sie im Posteingang ankommt und nicht im Spam-Ordner.
Die Felder, die Python abfragt
Jede Plattform nennt sie etwas anders, aber es geht immer um dieselben fünf. Die konkreten Werte sind kontogebunden und finden Sie in Ihrem 2mail-Konto — rufen Sie sie dort ab, damit Sie sicher die richtigen verwenden.
| Feld | Was Sie eintragen |
|---|---|
| SMTP-Server (Host) | Der Servername aus Ihrem 2mail-Konto. |
| Port | Der Port, der zu Ihrer gewählten Verschlüsselung gehört; Ihr Konto zeigt, welcher. |
| Verschlüsselung | TLS. Senden Sie nie unverschlüsselt — sonst gehen Ihre Zugangsdaten lesbar über die Leitung. |
| Benutzername | Der SMTP-Login Ihres 2mail-Kontos. |
| Passwort | Das zugehörige Passwort. Verwenden Sie nie das Passwort eines Mitarbeiterpostfachs. |
Welche Mails Python sendet
Sobald das Relay eingerichtet ist, laufen diese alle über 2mail — Sie müssen sie nicht einzeln konfigurieren.
Stolperfallen bei Python
TLS-Option und Port müssen zusammenpassen
Django kennt zwei getrennte TLS-Einstellungen: eine für STARTTLS und eine für TLS von Anfang an. Aktivieren Sie nur die für STARTTLS, die zu Port 587 passt. Beide zugleich führen zu einem Konfigurationsfehler; keine von beiden sendet Ihre Zugangsdaten im Klartext, was ein Relay zu Recht ablehnt.
Eine Verbindung pro Serie, nicht pro Nachricht
Ein Skript, das für jede von tausend Nachrichten eine neue SMTP-Verbindung öffnet, verhält sich wie ein Angreifer. Öffnen Sie eine Verbindung, senden Sie die Serie, schließen Sie. Django hat dafür eine Funktion, die mehrere Nachrichten über eine einzige Verbindung sendet.
Stille Fehler in Hintergrundaufgaben
Eine Exception in einem Cron-Job verschwindet in einer Logdatei, die niemand liest. Fangen Sie Versandfehler ab und melden Sie sie dort, wo sie gesehen werden — und binden Sie die Webhooks von 2mail für Zustellung und Bounces an, damit Sie auch sehen, was nach der Übergabe scheitert.
Andere Plattform?
SMTP ist ein Standardprotokoll: Jedes System, das SMTP spricht — ein CRM, ein ERP, eine eigene Anwendung oder ein Server —, kann über 2mail mit denselben fünf Feldern senden.