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 erstelle, die ich erstelle. Mit Python ist dies ziemlich einfach und leicht zu tun. Selbst wenn wir einige vordefinierte Vorlagen verwenden müssen, hilft Python uns, Platzhalterwerte durch tatsächliche Daten zu ersetzen, damit die endgültige E-Mail elegant und mit Details gefüllt ist, wodurch mein Kunden glücklich ist.

In dieser Lektion werde ich das Skript weitergeben, mit dem ich E -Mails an die Benutzer der Apps sende, die ich erstelle, und mehr.

Was wir tun werden?

Wir werden ein einfaches Python -Programm erstellen, das Folgendes ausführt:

  • Verwenden Sie die Vorlagendatei, die wir für das E -Mail -Design erstellen. Dies ist nur eine textbasierte Datei mit Platzhalterwerten.
  • Holen Sie sich den Namen und die E -Mail der Person aus einer anderen Textdatei, die wir erstellen,.

Diese Punkte machen dieses Programm einer realen Nutzung des Sendens von E-Mails in Ihren Apps viel näher. Lass uns anfangen.

Datei für E -Mails

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

Shubham Shubham.Code@Google Mail.com

Dies ist nur eine einfache Textdatei, die den Namen und die E -Mail des Benutzers enthält, die durch den Speicherplatz getrennt sind. Mit den Daten jedes Benutzers in einer neuen Zeile wurden mehrere E -Mails eingestellt. Wir haben diese Datei benannt Benutzer.txt.

Verwenden der Vorlage

Lassen Sie uns auch schnell die Vorlage definieren, die wir in unserem Skript verwenden werden, um Werte zu ersetzen:

Hallo $ person_name,
Wir haben diese E -Mail mit dem Python SMTPlib -Modul gesendet. Cool, richtig?
Einen hellen Tag vor sich haben!
Beifall

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

Benutzerdaten aus der Datei abrufen

Der erste Schritt, um E -Mail an einen Benutzer zu senden. Schreiben wir eine Python -Funktion, die einen Dateinamen akzeptiert und den Namen und E -Mail -IDs der US -Benutzer zurückgibt, bei denen die E -Mails gesendet werden müssen:

Def get_users_data (Datei_Name):
user_name = []
user_email = []
mit öffnen (Datei_Name, modus = 'r', coding = 'utf-8') als user_file:
für user_info in user_file:
Nutzername.append (user_info.split () [0])
Benutzer Email.append (user_info.split () [1])
user_name, user_email zurückgeben

Mit dieser Funktion geben wir nur die Namen und E -Mails des Benutzers zurück, mit denen wir die Datei formen.

Das Vorlagenobjekt erhalten

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

Def read_template (Datei_Name):
mit öffnen (Datei_Name, 'R', coding = 'utf-8') als msg_template:
msg_template_content = msg_template.lesen()
Rückgabevorlage (msg_template_content)

Damit werden wir ein Vorlagenobjekt zurückerhalten, mit dem wir den Inhalt der Datei analysieren und den erforderlichen Ersatz für die Vorlagenzeichenfolgen wie den Namen eines Benutzers vornehmen können.

Wie E -Mail -Senden erledigt ist?

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

  • Erstellen Sie eine SMTP -Verbindung mit Anmeldeinformationen für das Konto des Absenders
  • Konstruieren Sie einen mehrteiligen Header mit Informationen mit von, von, zu und an den Feldern
  • Konstruieren Sie den Nachrichtenkörper, der gesendet werden muss
  • Senden Sie die E -Mail mit SMTP -Verbindungsobjekt

Einrichten der SMTP -Verbindung

Lassen Sie uns schließlich die Funktion definieren, die die E -Mail an die benannten Benutzer senden wird. Hier ist die Funktion:

Def Main ():
user_name, user_email = get_users_data ('Benutzer.txt ') # Benutzerdetails lesen
message_template = read_template ('Nachricht.txt')
# Richten Sie den SMTP -Server ein
SMTPLIB_SERVER = SMTPLIB.SMTP (Host = 'SMTP.Google Mail.com ', port = 587)
SMTPLIB_SERVER.Starttls ()
SMTPLIB_SERVER.Login (send_from, E -Mail_PWD)
# Holen Sie sich jedes Benutzerdetail und senden Sie die E -Mail:
Für den Namen E -Mail in ZIP (user_name, user_email):
Multipart_Message = MimemultiPart () # Erstellen einer Nachricht
# Fügen Sie den tatsächlichen Personennamen der Nachrichtenvorlage hinzu
msg = message_template.Ersatz (Person_Name = Name.Titel())
# Druckt den Meldungskörper für unseren Sake aus
Druck (MSG)
# Richten Sie die Parameter der Nachricht ein
Multipart_Message ['aus'] = send_from
Multipart_Message ['to'] = E -Mail
Multipart_Message ['Betreff'] = "LinuxHint -E -Mail"
# In den Nachrichtenkörper hinzufügen
Multipart_Message.atat (mimetext (msg, 'einfache'))
# Senden Sie die Nachricht über den früher eingerichteten Server.
SMTPLIB_SERVER.send_message (Multipart_Message)
Del Multipart_Message
# Beenden Sie die SMTP -Sitzung und schließen Sie die Verbindung
SMTPLIB_SERVER.aufhören()

In der obigen Funktion befolgten wir jedem Schritt, den wir im vorherigen Abschnitt angegeben haben. Wir haben die SMTP -Verbindung konstruiert und sie verwendet, um die E -Mail zu senden.

Vollständiges Programm

Schauen wir uns im letzten Abschnitt das vollständige Programm an, mit dem die E -Mail an den festgelegten Benutzer gesendet werden kann:

SMTPLIB importieren
Aus der String -Importvorlage
aus der Email.Mime.Mehrparteigerer Import Mimemultipart
aus der Email.Mime.Textimport Mimetext
Send_from = 'my-email-hier' '
E-Mail_pwd = 'My-password-hier' '
Def get_users_data (Datei_Name):
user_name = []
user_email = []
mit öffnen (Datei_Name, modus = 'r', coding = 'utf-8') als user_file:
für user_info in user_file:
Nutzername.append (user_info.split () [0])
Benutzer Email.append (user_info.split () [1])
user_name, user_email zurückgeben
Def read_template (Datei_Name):
mit öffnen (Datei_Name, 'R', coding = 'utf-8') als msg_template:
msg_template_content = msg_template.lesen()
Rückgabevorlage (msg_template_content)
Def Main ():
user_name, user_email = get_users_data ('Benutzer.txt ') # Benutzerdetails lesen
message_template = read_template ('Nachricht.txt')
# Richten Sie den SMTP -Server ein
SMTPLIB_SERVER = SMTPLIB.SMTP (Host = 'SMTP.Google Mail.com ', port = 587)
SMTPLIB_SERVER.Starttls ()
SMTPLIB_SERVER.Login (send_from, E -Mail_PWD)
# Holen Sie sich jedes Benutzerdetail und senden Sie die E -Mail:
Für den Namen E -Mail in ZIP (user_name, user_email):
Multipart_Message = MimemultiPart () # Erstellen einer Nachricht
# Fügen Sie den tatsächlichen Personennamen der Nachrichtenvorlage hinzu
msg = message_template.Ersatz (Person_Name = Name.Titel())
# Druckt den Meldungskörper für unseren Sake aus
Druck (MSG)
# Richten Sie die Parameter der Nachricht ein
Multipart_Message ['aus'] = send_from
Multipart_Message ['to'] = E -Mail
Multipart_Message ['Betreff'] = "LinuxHint -E -Mail"
# In den Nachrichtenkörper hinzufügen
Multipart_Message.atat (mimetext (msg, 'einfache'))
# Senden Sie die Nachricht über den früher eingerichteten Server.
SMTPLIB_SERVER.send_message (Multipart_Message)
Del Multipart_Message
# Beenden Sie die SMTP -Sitzung und schließen Sie die Verbindung
SMTPLIB_SERVER.aufhören()
Wenn __name__ == '__main__':
hauptsächlich()

Wenn wir dieses Programm mit einer Google Mail -ID ausführen, werden Sie möglicherweise mit einem solchen Problem konfrontiert:

Google Mail SMTP -Fehler


Dies liegt daran. Dazu müssen Sie möglicherweise das Sicherheitsanmeldung in Ihrem Google Mail -Konto deaktivieren. Lesen Sie hier, wie Sie dies für Google Mail machen.

Abschluss

In dieser Lektion haben wir uns angesehen, wie wir E -Mails mit Pythons senden können SMTPLIB Modul.