So senden Sie automatisierte E-Mail-Nachrichten in Python
Kommerzielle E-Mail-Clients bieten zwar den Komfort einer benutzerfreundlichen Benutzeroberfläche, es fehlt ihnen jedoch häufig die Flexibilität und Anpassbarkeit, die viele Entwickler oder Ersteller von Inhalten für ihre E-Mail-Anforderungen wünschen.
Sei es für das Senden einer Dankes-E-Mail an einen neuen Abonnenten in Ihrem Social-Media-Kanal oder das Hinzufügen von E-Mail-Funktionen zu Ihrem neuesten Projekt. Die Möglichkeit, automatisierte Nachrichten mithilfe von SMTP in Python zu senden, ist sicherlich nützlich.
Lesen Sie weiter, um herauszufinden, wie Sie mit einem Python-Skript E-Mails senden können, die heute auf Ihrem Computer ausgeführt werden.
Was ist SMTP?
Einfach ausgedrückt ist SMTP oder Simple Mail Transfer Protocol ein Kommunikationsprotokoll für Mailserver, um E-Mails über das Internet zu übertragen.
Es ist ein integraler Bestandteil der Anwendungsschicht der TCP / IP-Suite, einer Reihe von Protokollen, die für die Kommunikation über das Internet oder andere ähnliche Netzwerke verwendet werden. In einem Netzwerk, in dem SMTP implementiert ist, hilft ein Prozess, der als Speichern und Weiterleiten bezeichnet wird, beim Verschieben von E-Mails über Netzwerke.
An jedem Endpunkt verwendet die als Mail Transfer Agent (MTA) bekannte Software Store and Forward, um die Kommunikation zwischen den teilnehmenden SMTP-Servern zu erleichtern. Die Hauptaufgabe von SMTP besteht daher einfach darin, zu bestimmen, wo und wie E-Mails in einem Netzwerk von einem Punkt zum anderen verschoben werden.
Einstieg
Sie benötigen ein E-Mail-Konto, um E-Mails mit diesem Programm senden zu können. Dies liegt daran, dass wir den SMTP-Dienst des E-Mail-Clients zum Senden von E-Mails verwenden. Für dieses Tutorial verwenden wir Google Mail.
Sie können auch einen lokalen SMTP-Debugging-Server zum Senden von Test-E-Mails verwenden. Derzeit verwenden wir jedoch ein E-Mail-Konto zum Senden von E-Mails, da dies intuitiver ist.
Es ist möglich, einfach ein vorhandenes Google Mail-Konto zu verwenden. Wenn Sie jedoch mit Ihrem Programm herumspielen, wird es möglicherweise bald mit Test-E-Mails gefüllt. Aus diesem Grund empfehlen wir, zum Testen ein Wegwerfkonto zu erstellen.
Aktivieren Sie jetzt die Option, damit weniger sichere Apps auf Ihr Google Mail-Konto zugreifen können. Dies ist ein weiterer Grund, eine Wegwerf-E-Mail zu verwenden, da nicht empfohlen wird, mit den Datenschutzeinstellungen Ihrer primären E-Mail herumzuspielen.
Schreiben der E-Mail in Python
Python 3 ist mit einem Modul namens smtplib (kurz für smtp library) vorinstalliert, das für die Arbeit mit SMTP-Servern verwendet werden kann.
Wie bei jedem anderen Python-Modul müssen Sie zunächst smtplib importieren.
import smtplib
Initialisieren eines SMTP-Objekts
Jetzt können Sie mit smtplib ein SMTP-Objekt erstellen, das Ihnen die meisten Funktionen eines herkömmlichen E-Mail-Clients bietet. Die Funktionen eines SMTP-Objekts können jedoch nur über Instanzmethoden verwendet werden. Der nächste Schritt besteht natürlich darin, eine Objektinstanz zu deklarieren.
mySMTP = smtplib.SMTP("smtp.google.com")
Dadurch wird das SMTP-Objekt so konfiguriert, dass E-Mails über den SMTP-Server von Google gesendet werden.
Danach geben wir die Absender- und Empfänger-E-Mails an. Hier ist das zuvor erstellte Google Mail-Konto nützlich.
emailSender = “[email protected]”
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
Hierbei ist zu beachten, dass die Empfängerliste tatsächlich ein Array ist, was bedeutet, dass sie zum Speichern nichtatomarer Werte ausgelegt ist. Infolgedessen können Sie in diesem Feld sogar eine vollständige Mailingliste angeben!
Nachricht schreiben
Der wohl einfachste Teil des Prozesses, hier müssen Sie Werte eingeben, die Sie normalerweise beim Verfassen einer neuen E-Mail hinzufügen würden. Das beinhaltet:
- Angaben zum Absender
- Angaben des Empfängers
- Gegenstand
- Nachrichtentext
Diese Felder werden in dreifachen Anführungszeichen gesetzt und wie folgt abgegrenzt:
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
Senden der E-Mail
Schließlich können wir den Befehl sendmail verwenden, um die E-Mails von Ihrem SMTP-Server an den Server des Empfängers zu senden.
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
Jetzt gibt es nur noch einen letzten Schritt: Neuordnung des Codes, um vorhersehbare Programmabstürze zu vermeiden.
Fehlerbehebung bei Ihrem Python-E-Mail-Programm
Manchmal kann Ihr SMTP-Server keine Verbindung mit der des Empfängers herstellen, oder es liegt ein Problem beim Senden einer E-Mail von einem SMTP-Port an einen anderen vor. In einem solchen Fall kann Ihr Programm unerwartet abstürzen.
Um solche Möglichkeiten zu berücksichtigen, können Sie einen Try-Except- Block verwenden und die fehleranfälligen Anweisungen in den Try- Block einfügen. Ihr gesamtes Programm sollte zusammen mit dem Try-Except-Block ungefähr so aussehen:
import smtplib
emailSender = “[email protected]”
myThroaway = '[email protected]'
emailRecipients = [myThroaway]
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
smtpObj = smtplib.SMTP('smtp.gmail.com')
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
print (“Email sent successfully!”)
except SMTPException:
print ("Error: There was an error in sending your email.")
Sichern Sie Ihre E-Mails
Wenn Sie Python in einer realen Umgebung zum Senden von E-Mails verwenden möchten, müssen Sie sicherstellen, dass die Kommunikation an beiden Enden sicher ist.
Die Verwendung eines einfachen SMTP-Servers mit dem Standardport bietet keine Verschlüsselungsschicht für die Kommunikation. Dies bedeutet, dass Dritte, die Ihr Netzwerk abhören, auf Ihre Anmeldeinformationen und die in Ihrer E-Mail enthaltenen Informationen zugreifen können.
Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, das TLS-Protokoll (Transport Layer Security) zum Verschlüsseln Ihrer Kommunikation zu verwenden. Dies ist das gleiche Protokoll, das von großen E-Mail-Clients wie Google Mail und Outlook verwendet wird, um sicherzustellen, dass Ihre E-Mails niemals in die falschen Hände geraten.
Dazu müssen wir einige kleinere Änderungen an dem zuvor erstellten Programm vornehmen.
Der erste Schritt besteht natürlich darin, die SSL- Bibliothek zusammen mit smtplib zu importieren. Mit der SSL- Bibliothek können Sie einen sicheren SSL-Kontext erstellen und über ein verschlüsseltes Netzwerk kommunizieren, indem Sie an beiden Enden eine Verbindung zu bestimmten Ports herstellen.
Ein sicherer SSL-Kontext ist nichts anderes als eine Sammlung von Chiffren, Protokollversionen, vertrauenswürdigen Zertifikaten, TLS-Optionen und TLS-Erweiterungen.
Anschließend können wir den TLS-Port angeben und einige SSL- Bibliotheksfunktionen hinzufügen, um einen sicheren E- Mailer zu erstellen.
Der Code sieht mit all den vorgenommenen Änderungen ungefähr so aus:
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
password = "my_password"
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
server = smtplib.SMTP(smtpServer,port)
server.starttls(context=context)
server.login(newEmail, password)
except Exception as e:
print("the email could not be sent.")
finally:
server.quit()
Nach wie vor sollten Sie die SMTP-Instanz in einem Try-Except-Block erstellen und verwenden, um abrupte Programmabstürze zu vermeiden.
Was Sie mit diesem Python-Skript tun können
Nachdem Sie die großartige und überraschend nützliche Fähigkeit kennengelernt haben, E-Mails mithilfe von Code zu automatisieren, können Sie sie auf jede Plattform anwenden, auf der E-Mails an eine vielfältige Mailingliste gesendet werden müssen.
Von der Verwendung auf Ihrer persönlichen Website zum Versenden automatisierter Bestätigungs-E-Mails bis zur Verwendung zum Versenden von Weihnachtskarten oder Einladungen an Ihre Familie und Freunde ist die Verwendung dieses kleinen Python-Skripts nur durch Ihre eigene Kreativität eingeschränkt.
Dies ist auch nur eines der vielen großartigen Dinge, die Sie mit Python tun können. Mit seiner allgegenwärtigen Entwicklerunterstützung und der leicht zu erlernenden Syntax war es nie einfacher, eine Python-Fähigkeit zu erlernen.
Um weiterhin coole Dinge mit Code zu erstellen, lesen Sie unseren Leitfaden zum Erstellen Ihres eigenen Telegramm-Bots mit Python 3 !