logo

Python sendet E-Mails über SMTP

Als Protokoll zur Abwicklung der E-Mail-Übertragung mit Python wird das Simple Mail Transfer Protocol (SMTP) verwendet. Es wird zum Weiterleiten von E-Mails zwischen E-Mail-Servern verwendet. Es handelt sich um ein Protokoll auf Anwendungsebene, das es Benutzern ermöglicht, E-Mails an andere zu senden. Der Empfänger ruft E-Mails mithilfe der Protokolle ab POP (Post Office Protocol) Und IMAP (Internet Message Access Protocol) .

Python sendet E-Mails über SMTP

Wenn der Server auf die TCP-Verbindung eines Clients wartet, initiiert er eine Verbindung über Port 587.

Python bietet eine smtplib Modul, das ein SMTP-Client-Sitzungsobjekt definiert, das zum Senden von E-Mails an einen Internetcomputer verwendet wird. Zu diesem Zweck müssen wir die importieren smtplib Modul mithilfe der Importanweisung.

 $ import smtplib 

Für den E-Mail-Versand wird das SMTP-Objekt verwendet. Die folgende Syntax wird zum Erstellen des smtplib-Objekts verwendet.

 import smtplib smtpObj = smtplib.SMTP(host, port, local_hostname) 

Es akzeptiert die folgenden Parameter.

    Gastgeber:Es ist der Hostname des Rechners, auf dem Ihr SMTP-Server läuft. Hier können wir die IP-Adresse des Servers angeben, z. B. (https://www.javatpoint.com) oder localhost. Es handelt sich um einen optionalen Parameter.Hafen:Dies ist die Portnummer, an der der Hostcomputer die SMTP-Verbindungen abhört. Der Standardwert ist 25.local_hostname:Wenn der SMTP-Server auf Ihrem lokalen Computer läuft, können wir den Hostnamen des lokalen Computers angeben.

Die sendmail()-Methode des SMTP-Objekts wird verwendet, um die E-Mail an den gewünschten Computer zu senden. Die Syntax ist unten angegeben.

 smtpObj.sendmail(sender, receiver, message) 

Beispiel

 #!/usr/bin/python3 import smtplib sender_mail = '[email protected]' receivers_mail = ['[email protected]'] message = '''From: From Person %s To: To Person %s Subject: Sending SMTP e-mail This is a test e-mail message. '''%(sender_mail,receivers_mail) try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender_mail, receivers_mail, message) print('Successfully sent email') except Exception: print('Error: unable to send email') 

E-Mail von Google Mail senden

Es gibt Fälle, in denen die E-Mails über den Gmail-SMTP-Server gesendet werden. In diesem Fall können wir Gmail als SMTP-Server übergeben, anstatt den Localhost mit dem Port 587 zu verwenden.

Verwenden Sie die folgende Syntax.

 $ smtpObj = smtplib.SMTP('gmail.com', 587) 

Hier müssen wir uns mit dem Gmail-Benutzernamen und dem Gmail-Passwort beim Gmail-Konto anmelden. Zu diesem Zweck stellt die smtplib die Methode login() bereit, die den Benutzernamen und das Passwort des Absenders akzeptiert.

Dies kann dazu führen, dass Ihr Gmail Sie um Zugriff auf weniger sichere Apps bittet, wenn Sie Gmail verwenden. Damit dies funktioniert, müssen Sie dies vorübergehend einschalten.

Python sendet E-Mails über SMTP

Betrachten Sie das folgende Beispiel.

Beispiel

 #!/usr/bin/python3 import smtplib sender_mail = '[email protected]' receivers_mail = ['[email protected]'] message = '''From: From Person %s To: To Person %s Subject: Sending SMTP e-mail This is a test e-mail message. '''%(sender_mail,receivers_mail) try: password = input('Enter the password'); smtpObj = smtplib.SMTP('gmail.com',587) smtpobj.login(sender_mail,password) smtpObj.sendmail(sender_mail, receivers_mail, message) print('Successfully sent email') except Exception: print('Error: unable to send email') 

HTML per E-Mail versenden

Wir können den HTML-Code in der Nachricht formatieren, indem wir die MIME-Version, den Inhaltstyp und den Zeichensatz zum Senden des HTML-Codes angeben.

Betrachten Sie das folgende Beispiel.

Beispiel

 #!/usr/bin/python3 import smtplib sender_mail = &apos;[email protected]&apos; receivers_mail = [&apos;[email protected]&apos;] message = &apos;&apos;&apos;From: From Person %s To: To Person %s MIME-Version:1.0 Content-type:text/html Subject: Sending SMTP e-mail <h3>Python SMTP</h3> <strong>This is a test e-mail message.</strong> &apos;&apos;&apos;%(sender_mail,receivers_mail) try: smtpObj = smtplib.SMTP(&apos;localhost&apos;) smtpObj.sendmail(sender_mail, receivers_mail, message) print(&apos;Successfully sent email&apos;) except Exception: print(&apos;Error: unable to send email&apos;)