Python

Senden einer E-Mail in Python

Senden einer E-Mail in Python
Das Senden einer E-Mail ist eine der häufigsten Aufgaben, die ich in den Webanwendungen und anderen Projekten, die ich erstelle, erledigen muss. Mit Python ist dies ganz einfach und einfach zu tun. Selbst wenn wir einige vordefinierte Vorlagen verwenden müssen, hilft uns Python dabei, Platzhalterwerte durch tatsächliche Daten zu ersetzen, damit die endgültige E-Mail elegant und voller Details aussieht, was meinen Kunden glücklich macht.

In dieser Lektion teile ich das Skript, das ich verwende, um E-Mails an die Benutzer der von mir erstellten Apps zu senden, und mehr.

Was wir tun werden?

Wir erstellen ein einfaches Python-Programm, das Folgendes tut:

Diese Punkte bringen dieses Programm viel näher an die reale Verwendung des Sendens von E-Mails in Ihren Apps. Lass uns anfangen.

Datei für E-Mails

Die Datei, die die E-Mails für die Benutzer enthält, sieht so aus:

Shubham [email protected]

Dies ist nur eine einfache Textdatei, die den Namen und die E-Mail-Adresse des Benutzers durch Leerzeichen getrennt enthält. Es wurden mehrere E-Mails mit den Daten jedes Benutzers in einer neuen Zeile eingefügt. Wir haben diese Datei benannt Benutzer.TXT.

Verwenden der Vorlage

Lassen Sie uns auch schnell die Vorlage definieren, die wir in unserem Skript zum Ersetzen von Werten verwenden werden:

Hallo $PERSON_NAME,
Wir haben diese E-Mail mit dem Python-smtplib-Modul gesendet. Cool, richtig?
Habt einen strahlenden Tag vor uns!
Prost

Wir haben eine Vorlagenzeichenfolge verwendet $PERSON_NAME die durch den Namen der Person ersetzt wird, die wir von den Benutzern erhalten.txt-Datei beim Senden der E-Mail.

Abrufen von Benutzerdaten aus einer Datei

Der erste Schritt zum Senden einer E-Mail an einen Benutzer besteht darin, festzustellen, wohin wir die E-Mails senden möchten. Schreiben wir eine Python-Funktion, die einen Dateinamen akzeptiert und uns Benutzernamen und E-Mail-IDs zurückgibt, an die die E-Mails gesendet werden müssen:

def get_users_data(Dateiname):
Benutzername = []
user_email = []
mit open(file_name, mode='r', encoding='utf-8') als user_file:
für user_info in user_file:
Nutzername.anhängen(user_info.split()[0])
Benutzer Email.anhängen(user_info.split()[1])
Benutzername, Benutzere-Mail zurückgeben

Mit dieser Funktion geben wir nur die Namen und E-Mails der Benutzer zurück, die wir aus der Datei erhalten.

Abrufen des Vorlagenobjekts

Jetzt können wir unsere Vorlage analysieren und ein Vorlagenobjekt aus der von uns erstellten Textdatei abrufen:

def read_template(file_name):
mit open(file_name, 'r', encoding='utf-8') als msg_template:
msg_template_content = msg_template.lesen()
Vorlage zurückgeben(msg_template_content)

Damit erhalten wir ein Template-Objekt zurück, mit dem wir den Inhalt der Datei analysieren und die erforderlichen Ersetzungen für die Template-Strings wie einen Benutzernamen vornehmen können.

So erfolgt der E-Mail-Versand?

Nachdem wir nun mit dem Vorlagendesign und den Benutzerdaten fertig sind, müssen wir verstehen, wie eine E-Mail tatsächlich an den Benutzer gesendet wird:

SMTP-Verbindung einrichten

Lassen Sie uns abschließend die Funktion definieren, die die E-Mail an die angegebenen Benutzer sendet. Hier ist die Funktion:

def main():
user_name, user_email = get_users_data('users.txt') # Benutzerdetails lesen
message_template = read_template('message.TXT')
# SMTP-Server einrichten
smtplib_server = smtplib.SMTP(host='smtp.Google Mail.com', port=587)
smtplib_server.starttls()
smtplib_server.anmelden(SEND_FROM, EMAIL_PWD)
# Rufen Sie alle Benutzerdetails ab und senden Sie die E-Mail:
für Name, E-Mail in ZIP (Benutzername, Benutzer-E-Mail):
multipart_message = MIMEMultipart() # eine Nachricht erstellen
# den tatsächlichen Personennamen zur Nachrichtenvorlage hinzufügen
msg = message_template.Ersatz(PERSON_NAME=name.Titel())
# Druckt den Nachrichtentext für uns aus
drucken (Nachricht)
# die Parameter der Nachricht einrichten
multipart_message['From']=SEND_FROM
multipart_message['To']=E-Mail
multipart_message['Subject']="LinuxHint-E-Mail"
# im Nachrichtentext hinzufügen
mehrteilige_nachricht.attach(MIMEText(msg, 'plain'))
# Nachricht über den zuvor eingerichteten Server senden send.
smtplib_server.send_message(mehrteilige_message)
del multipart_message
# Beenden Sie die SMTP-Sitzung und schließen Sie die Verbindung
smtplib_server.Verlassen()

In der obigen Funktion haben wir jeden Schritt befolgt, den wir im vorherigen Abschnitt angegeben haben. Wir haben die SMTP-Verbindung aufgebaut und zum Versenden der E-Mail verwendet.

Komplettes Programm

Lassen Sie uns im letzten Abschnitt einen Blick auf das vollständige Programm werfen, mit dem die E-Mail an den angegebenen Benutzer gesendet werden kann:

smtplib importieren
aus String-Import-Vorlage
aus der Email.Mime.mehrteiliger Import MIMEMultipart
aus der Email.Mime.Textimport MIMEText
SEND_FROM = 'meine-E-Mail-hier'
EMAIL_PWD = 'mein-Passwort-hier'
def get_users_data(Dateiname):
Benutzername = []
user_email = []
mit open(file_name, mode='r', encoding='utf-8') als user_file:
für user_info in user_file:
Nutzername.anhängen(user_info.split()[0])
Benutzer Email.anhängen(user_info.split()[1])
Benutzername, Benutzere-Mail zurückgeben
def read_template(file_name):
mit open(file_name, 'r', encoding='utf-8') als msg_template:
msg_template_content = msg_template.lesen()
Vorlage zurückgeben(msg_template_content)
def main():
user_name, user_email = get_users_data('users.txt') # Benutzerdetails lesen
message_template = read_template('message.TXT')
# SMTP-Server einrichten
smtplib_server = smtplib.SMTP(host='smtp.Google Mail.com', port=587)
smtplib_server.starttls()
smtplib_server.anmelden(SEND_FROM, EMAIL_PWD)
# Rufen Sie alle Benutzerdetails ab und senden Sie die E-Mail:
für Name, E-Mail in ZIP (Benutzername, Benutzer-E-Mail):
multipart_message = MIMEMultipart() # eine Nachricht erstellen
# den tatsächlichen Personennamen zur Nachrichtenvorlage hinzufügen
msg = message_template.Ersatz(PERSON_NAME=name.Titel())
# Druckt den Nachrichtentext für uns aus
drucken (Nachricht)
# die Parameter der Nachricht einrichten
multipart_message['From']=SEND_FROM
multipart_message['To']=E-Mail
multipart_message['Subject']="LinuxHint-E-Mail"
# im Nachrichtentext hinzufügen
mehrteilige_nachricht.attach(MIMEText(msg, 'plain'))
# Nachricht über den zuvor eingerichteten Server senden.
smtplib_server.send_message(mehrteilige_message)
del multipart_message
# Beenden Sie die SMTP-Sitzung und schließen Sie die Verbindung
smtplib_server.Verlassen()
if __name__ == '__main__':
Main()

Wenn wir dieses Programm mit einer Gmail-ID ausführen, kann ein Problem wie dieses auftreten:

Gmail-SMTP-Fehler


Dies liegt daran, dass Gmail die Verwendung der Gmail-API durch einfache Skripte nicht zulässt. Dazu müssen Sie möglicherweise die Sicherheitsanmeldung in Ihrem Gmail-Konto deaktivieren. Lesen Sie hier, wie Sie dies für Gmail tun.

Fazit

In dieser Lektion haben wir uns angeschaut, wie wir E-Mails mit Pythons versenden können smtplib Modul.

Beste Spielkonsolen-Emulatoren für Linux
Dieser Artikel listet beliebte Spielekonsolen-Emulationssoftware auf, die für Linux verfügbar ist. Emulation ist eine Softwarekompatibilitätsschicht, ...
Beste Linux-Distributionen für Gaming im Jahr 2021
Das Linux-Betriebssystem hat sich weit von seinem ursprünglichen, einfachen, serverbasierten Aussehen entfernt. Dieses Betriebssystem hat sich in den ...
So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...