Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

E-Mails mit Python und SMTP versenden: Schnellstart

Einführung

Simple Mail Transfer Protocol (SMTP) ist ein Protokoll zum Versenden und Routen von E-Mails zwischen Mailservern.

Python stellt das Modul smtplib bereit, das ein SMTP-Client-Session-Objekt definiert, um E-Mails an jede Internet-Maschine mit SMTP- oder ESMTP-Listener-Daemon zu senden.

SMTP-Objekt erstellen

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

Parameter

Ein SMTP-Objekt hat die Instanzmethode sendmail für den Versand. Sie nimmt drei Parameter:

Beispiel: Einfache E-Mail senden

#!/usr/bin/python
import smtplib
sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']
message = """From: From Person 
To: To Person 
Subject: SMTP e-mail test

This is a test e-mail message.
"""
try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message)
    print("Successfully sent email")
except SMTPException:
    print("Error: unable to send email")

Die E-Mail enthält From, To, Subject Header, getrennt vom Body durch eine Leerzeile.

Sie nutzen smtpObj für die Verbindung zum lokalen SMTP-Server und sendmail mit Nachricht, Absender- und Zieladresse.

Falls kein lokaler SMTP-Server läuft, können Sie einen entfernten Server nutzen:

smtplib.SMTP('mail.your-domain.com', 25)

HTML-E-Mail versenden

Bei Textnachrichten wird der gesamte Inhalt als einfacher Text behandelt. HTML-Tags werden nicht formatiert. Python ermöglicht den Versand als echtes HTML.

Geben Sie MIME-Version, Content-Type und Charset an.

Beispiel: HTML-E-Mail

#!/usr/bin/python
import smtplib
message = """From: From Person 
To: To Person 
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format
This is HTML message.

This is headline.

""" try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print("Successfully sent email") except SMTPException: print("Error: unable to send email")

E-Mail mit Anhängen versenden

Für gemischten Inhalt setzen Sie Content-type Header auf multipart/mixed. Text- und Anhangsabschnitte werden innerhalb von Boundaries spezifiziert.

Anhänge sollten mit pack("m") (base64) kodiert werden vor der Übertragung.

Beispiel: Datei als Anhang

#!/usr/bin/python
import smtplib
import base64

filename = "/tmp/test.txt"
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)

sender = 'webmaster@tutorialpoint.com'
receiver = 'amrood.admin@gmail.com'
marker = "AUNIQUEMARKER"

body = """This is a test email to send an attachment."""

part1 = """From: From Person 
To: To Person 
Subject: Sending Attachment
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

part2 = """Content-Type: text/plain
Content-Transfer-Encoding: 8bit
%s
--%s
""" % (body, marker)

part3 = """Content-Type: multipart/mixed; name="%s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=%s
%s
--%s--
""" % (filename, filename, encodedcontent, marker)

message = part1 + part2 + part3
try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receiver, message)
    print("Successfully sent email")
except Exception:
    print("Error: unable to send email")

Python

  1. Python-Datentypen meistern: Praxisleitfaden
  2. Python-Operatoren meistern: Umfassender Leitfaden
  3. Python pass-Statement meistern: Praxisleitfaden
  4. Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
  5. Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
  6. Python Exception Handling meistern: try, except, else und finally erklärt
  7. TMP006 Infrarot-Temperatursensor mit Raspberry Pi: Python Library & Setup Guide
  8. Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
  9. Durchschnitt berechnen in Python: Praktischer Leitfaden
  10. Zwei Python-Variablen tauschen ohne temporäre Variable – Mühelos