smtplib — SMTP-Protokollclient¶
Quellcode: Lib/smtplib.py
Das Modul smtplib definiert ein SMTP-Client-Sitzungsobjekt, das verwendet werden kann, um E-Mails an jede Internetmaschine mit einem SMTP- oder ESMTP-Listener-Daemon zu senden. Details zum SMTP- und ESMTP-Betrieb finden Sie in RFC 821 (Simple Mail Transfer Protocol) und RFC 1869 (SMTP Service Extensions).
Verfügbarkeit: nicht WASI.
Dieses Modul funktioniert nicht oder ist nicht auf WebAssembly verfügbar. Weitere Informationen finden Sie unter WebAssembly-Plattformen.
- class smtplib.SMTP(host='', port=0, local_hostname=None, [timeout, ]source_address=None)¶
Eine
SMTP-Instanz kapselt eine SMTP-Verbindung. Sie verfügt über Methoden, die ein vollständiges Repertoire an SMTP- und ESMTP-Operationen unterstützen. Wenn die optionalen Parameter host und port angegeben sind, wird die SMTP-Methodeconnect()während der Initialisierung mit diesen Parametern aufgerufen. Wenn angegeben, wird local_hostname als FQDN des lokalen Hosts im HELO/EHLO-Befehl verwendet. Andernfalls wird der lokale Hostname mitsocket.getfqdn()ermittelt. Wenn der Aufruf vonconnect()etwas anderes als einen Erfolgscode zurückgibt, wird einSMTPConnectErrorausgelöst. Der optionale Parameter timeout gibt eine Zeitüberschreitung in Sekunden für blockierende Operationen wie den Verbindungsversuch an (wenn nicht angegeben, wird die globale Standard-Timeout-Einstellung verwendet). Wenn die Zeitüberschreitung abläuft, wirdTimeoutErrorausgelöst. Der optionale Parameter source_address ermöglicht die Bindung an eine bestimmte Quelladresse auf einem Rechner mit mehreren Netzwerkschnittstellen und/oder einen bestimmten TCP-Quellport. Er nimmt ein 2-Tupel(host, port)entgegen, an das der Socket als Quelladresse vor der Verbindung gebunden wird. Wenn dies weggelassen wird (oder wenn host oder port''bzw.0sind), wird das Standardverhalten des Betriebssystems verwendet.Für den normalen Gebrauch benötigen Sie nur die Initialisierungs-/Connect-,
sendmail()- undSMTP.quit()-Methoden. Ein Beispiel ist unten enthalten.Die Klasse
SMTPunterstützt diewith-Anweisung. Wenn sie so verwendet wird, wird der SMTP-BefehlQUITautomatisch ausgegeben, wenn diewith-Anweisung verlassen wird. Z.B.>>> from smtplib import SMTP >>> with SMTP("domain.org") as smtp: ... smtp.noop() ... (250, b'Ok') >>>
Alle Befehle lösen ein Audit-Ereignis
smtplib.SMTP.sendmit den Argumentenselfunddataaus, wobeidatadie Bytes sind, die an den Remote-Host gesendet werden sollen.Geändert in Version 3.3: Die Unterstützung für die
with-Anweisung wurde hinzugefügt.Geändert in Version 3.3: Das Argument source_address wurde hinzugefügt.
Hinzugefügt in Version 3.5: Die SMTPUTF8-Erweiterung (RFC 6531) wird nun unterstützt.
Geändert in Version 3.9: Wenn der Parameter timeout auf Null gesetzt ist, wird ein
ValueErrorausgelöst, um die Erstellung eines nicht-blockierenden Sockets zu verhindern.
- class smtplib.SMTP_SSL(host='', port=0, local_hostname=None, *, [timeout, ]context=None, source_address=None)¶
Eine
SMTP_SSL-Instanz verhält sich genau wie Instanzen vonSMTP.SMTP_SSLsollte für Situationen verwendet werden, in denen SSL von Anfang der Verbindung an erforderlich ist und die Verwendung vonstarttls()nicht geeignet ist. Wenn host nicht angegeben ist, wird der lokale Host verwendet. Wenn port null ist, wird der Standard-SMTP-über-SSL-Port (465) verwendet. Die optionalen Argumente local_hostname, timeout und source_address haben die gleiche Bedeutung wie in der KlasseSMTP. context, ebenfalls optional, kann einenSSLContextenthalten und ermöglicht die Konfiguration verschiedener Aspekte der sicheren Verbindung. Bitte lesen Sie Sicherheitsaspekte für Best Practices.Geändert in Version 3.3: context wurde hinzugefügt.
Geändert in Version 3.3: Das Argument source_address wurde hinzugefügt.
Geändert in Version 3.4: Die Klasse unterstützt nun die Hostnamenprüfung mit
ssl.SSLContext.check_hostnameund Server Name Indication (siehessl.HAS_SNI).Geändert in Version 3.9: Wenn der Parameter timeout auf Null gesetzt ist, wird ein
ValueErrorausgelöst, um die Erstellung eines nicht-blockierenden Sockets zu verhindern.Geändert in Version 3.12: Die veralteten Parameter keyfile und certfile wurden entfernt.
- class smtplib.LMTP(host='', port=LMTP_PORT, local_hostname=None, source_address=None[, timeout])¶
Das LMTP-Protokoll, das dem ESMTP sehr ähnlich ist, basiert stark auf dem Standard-SMTP-Client. Es ist üblich, Unix-Sockets für LMTP zu verwenden, daher muss unsere Methode
connect()dies sowie einen regulären Host:Port-Server unterstützen. Die optionalen Argumente local_hostname und source_address haben die gleiche Bedeutung wie in der KlasseSMTP. Um einen Unix-Socket anzugeben, müssen Sie einen absoluten Pfad für host verwenden, der mit einem '/' beginnt.Authentifizierung wird unterstützt, unter Verwendung der regulären SMTP-Mechanismen. Bei der Verwendung eines Unix-Sockets unterstützen oder erfordern LMTP im Allgemeinen keine Authentifizierung, aber Ihre Erfahrungen können variieren.
Geändert in Version 3.9: Der optionale Parameter timeout wurde hinzugefügt.
Eine nette Auswahl an Ausnahmen wird ebenfalls definiert
- exception smtplib.SMTPException¶
Unterklasse von
OSError, die die Basisklasse für alle anderen Ausnahmen in diesem Modul ist.Geändert in Version 3.4: SMTPException wurde zur Unterklasse von
OSError.
- exception smtplib.SMTPServerDisconnected¶
Diese Ausnahme wird ausgelöst, wenn der Server unerwartet die Verbindung trennt oder wenn versucht wird, die
SMTP-Instanz zu verwenden, bevor sie mit einem Server verbunden wurde.
- exception smtplib.SMTPResponseException¶
Basisklasse für alle Ausnahmen, die einen SMTP-Fehlercode enthalten. Diese Ausnahmen werden in einigen Fällen ausgelöst, wenn der SMTP-Server einen Fehlercode zurückgibt.
- smtp_code¶
Der Fehlercode.
- smtp_error¶
Die Fehlermeldung.
- exception smtplib.SMTPSenderRefused¶
Absenderadresse zurückgewiesen. Zusätzlich zu den Attributen, die für alle
SMTPResponseException-Ausnahmen gesetzt sind, wird hier 'sender' auf den String gesetzt, den der SMTP-Server zurückgewiesen hat.
- exception smtplib.SMTPRecipientsRefused¶
Alle Empfängeradressen zurückgewiesen.
- recipients¶
Ein Wörterbuch von exakt der gleichen Art wie von
SMTP.sendmail()zurückgegeben, das die Fehler für jeden Empfänger enthält.
- exception smtplib.SMTPDataError¶
Der SMTP-Server hat sich geweigert, die Nachrichtendaten zu akzeptieren.
- exception smtplib.SMTPConnectError¶
Fehler bei der Herstellung einer Verbindung zum Server.
- exception smtplib.SMTPHeloError¶
Der Server hat unsere
HELO-Nachricht zurückgewiesen.
- exception smtplib.SMTPNotSupportedError¶
Der versuchte Befehl oder die versuchte Option wird vom Server nicht unterstützt.
Hinzugefügt in Version 3.5.
- exception smtplib.SMTPAuthenticationError¶
SMTP-Authentifizierung fehlgeschlagen. Höchstwahrscheinlich hat der Server die angegebene Benutzername/Passwort-Kombination nicht akzeptiert.
Siehe auch
- RFC 821 - Simple Mail Transfer Protocol
Protokolldefinition für SMTP. Dieses Dokument behandelt das Modell, die Betriebsverfahren und die Protokolldetails für SMTP.
- RFC 1869 - SMTP Service Extensions
Definition der ESMTP-Erweiterungen für SMTP. Diese beschreibt ein Framework zur Erweiterung von SMTP um neue Befehle, zur Unterstützung der dynamischen Erkennung der vom Server bereitgestellten Befehle und definiert einige zusätzliche Befehle.
SMTP-Objekte¶
Eine SMTP-Instanz hat die folgenden Methoden
- SMTP.set_debuglevel(level)¶
Setzt die Debug-Ausgabeebene. Ein Wert von 1 oder
Truefür level führt zu Debug-Meldungen für die Verbindung und für alle an den Server gesendeten und vom Server empfangenen Nachrichten. Ein Wert von 2 für level führt zu Zeitstempeln für diese Nachrichten.Geändert in Version 3.5: Debuglevel 2 wurde hinzugefügt.
- SMTP.docmd(cmd, args='')¶
Sendet einen Befehl cmd an den Server. Das optionale Argument args wird einfach an den Befehl angehängt, getrennt durch ein Leerzeichen.
Dies gibt ein 2-Tupel zurück, bestehend aus einem numerischen Antwortcode und der tatsächlichen Antwortzeile (mehrzeilige Antworten werden zu einer langen Zeile zusammengefügt).
Im normalen Betrieb sollte es nicht notwendig sein, diese Methode explizit aufzurufen. Sie wird zur Implementierung anderer Methoden verwendet und kann zum Testen privater Erweiterungen nützlich sein.
Wenn die Verbindung zum Server beim Warten auf die Antwort verloren geht, wird
SMTPServerDisconnectedausgelöst.
- SMTP.connect(host='localhost', port=0)¶
Verbindet sich mit einem Host über einen gegebenen Port. Die Standardwerte sind, sich mit dem lokalen Host über den Standard-SMTP-Port (25) zu verbinden. Wenn der Hostname mit einem Doppelpunkt (
':') gefolgt von einer Zahl endet, wird dieser Suffix entfernt und die Zahl als Portnummer interpretiert. Diese Methode wird automatisch vom Konstruktor aufgerufen, wenn während der Instanziierung ein Host angegeben wurde. Gibt ein 2-Tupel aus dem Antwortcode und der Nachricht zurück, die vom Server in seiner Verbindungsantwort gesendet wurde.Löst ein Audit-Ereignis
smtplib.connectmit den Argumentenself,host,portaus.
- SMTP.helo(name='')¶
Identifiziert sich mit
HELObeim SMTP-Server. Das Hostnamenargument ist standardmäßig der vollqualifizierte Domainname des lokalen Hosts. Die vom Server zurückgegebene Nachricht wird im Attributhelo_respdes Objekts gespeichert.Im normalen Betrieb sollte es nicht notwendig sein, diese Methode explizit aufzurufen. Sie wird bei Bedarf implizit von
sendmail()aufgerufen.
- SMTP.ehlo(name='')¶
Identifiziert sich mit
EHLObei einem ESMTP-Server. Das Hostnamenargument ist standardmäßig der vollqualifizierte Domainname des lokalen Hosts. Analysiert die Antwort auf ESMTP-Optionen und speichert sie für die Verwendung durchhas_extn(). Setzt auch mehrere informative Attribute: die vom Server zurückgegebene Nachricht wird im Attributehlo_respgespeichert,does_esmtpwird aufTrueoderFalsegesetzt, je nachdem, ob der Server ESMTP unterstützt, undesmtp_featuresist ein Wörterbuch, das die Namen der von diesem Server unterstützten SMTP-Dienst-Erweiterungen und ihre Parameter (falls vorhanden) enthält.Sofern Sie
has_extn()vor dem Senden von E-Mails nicht verwenden möchten, sollte diese Methode nicht explizit aufgerufen werden. Sie wird bei Bedarf implizit vonsendmail()aufgerufen.
- SMTP.ehlo_or_helo_if_needed()¶
Diese Methode ruft
ehlo()und/oderhelo()auf, wenn in dieser Sitzung zuvor keinEHLO- oderHELO-Befehl ausgeführt wurde. Sie versucht zuerst das ESMTP-KommandoEHLO.SMTPHeloErrorDer Server hat nicht ordnungsgemäß auf die
HELO-Begrüßung reagiert.
- SMTP.has_extn(name)¶
Gibt
Truezurück, wenn name in der Menge der vom Server zurückgegebenen SMTP-Dienst-Erweiterungen enthalten ist, andernfallsFalse. Groß-/Kleinschreibung wird ignoriert.
- SMTP.verify(address)¶
Überprüft die Gültigkeit einer Adresse auf diesem Server mithilfe des SMTP-Befehls
VRFY. Gibt ein Tupel zurück, das aus dem Code 250 und einer vollständigen RFC 822-Adresse (einschließlich des menschlichen Namens) besteht, wenn die Benutzeradresse gültig ist. Andernfalls wird ein SMTP-Fehlercode von 400 oder höher und eine Fehlermeldung zurückgegeben.Hinweis
Viele Standorte deaktivieren SMTP
VRFY, um Spammer zu vereiteln.
- SMTP.login(user, password, *, initial_response_ok=True)¶
Meldet sich bei einem SMTP-Server an, der eine Authentifizierung erfordert. Die Argumente sind der Benutzername und das Passwort zur Authentifizierung. Wenn in dieser Sitzung noch kein vorheriger
EHLO- oderHELO-Befehl ausgeführt wurde, versucht diese Methode zunächst ESMTPEHLO. Diese Methode gibt normal zurück, wenn die Authentifizierung erfolgreich war, oder kann die folgenden Ausnahmen auslösenSMTPHeloErrorDer Server hat nicht ordnungsgemäß auf die
HELO-Begrüßung reagiert.SMTPAuthenticationErrorDer Server hat die Benutzername/Passwort-Kombination nicht akzeptiert.
SMTPNotSupportedErrorDer Befehl
AUTHwird vom Server nicht unterstützt.SMTPExceptionEs wurde keine geeignete Authentifizierungsmethode gefunden.
Jede der von
smtplibunterstützten Authentifizierungsmethoden wird nacheinander ausprobiert, wenn sie vom Server als unterstützt beworben werden. Sieheauth()für eine Liste der unterstützten Authentifizierungsmethoden. initial_response_ok wird anauth()weitergegeben.Das optionale Schlüsselwortargument initial_response_ok gibt an, ob für Authentifizierungsmethoden, die dies unterstützen, eine "initiale Antwort" gemäß RFC 4954 zusammen mit dem Befehl
AUTHgesendet werden kann, anstatt eine Herausforderung/Antwort zu erfordern.Geändert in Version 3.5:
SMTPNotSupportedErrorkann ausgelöst werden, und der Parameter initial_response_ok wurde hinzugefügt.
- SMTP.auth(mechanism, authobject, *, initial_response_ok=True)¶
Gibt einen
SMTPAUTH-Befehl für den angegebenen Authentifizierungsmechanismus mechanism aus und verarbeitet die Herausforderungsantwort über authobject.mechanism gibt an, welcher Authentifizierungsmechanismus als Argument für den Befehl
AUTHverwendet werden soll; die gültigen Werte sind die, die im Elementauthvonesmtp_featuresaufgeführt sind.authobject muss ein aufrufbares Objekt sein, das ein optionales einzelnes Argument akzeptiert
data = authobject(challenge=None)
Wenn das optionale Schlüsselwortargument initial_response_ok wahr ist, wird
authobject()zuerst ohne Argument aufgerufen. Es kann die RFC 4954 "initial response" als ASCIIstrzurückgeben, die dann kodiert und mit dem BefehlAUTHwie unten beschrieben gesendet wird. Wennauthobject()keine initiale Antwort unterstützt (z. B. weil sie eine Herausforderung erfordert), sollte esNonezurückgeben, wenn es mitchallenge=Noneaufgerufen wird. Wenn initial_response_ok falsch ist, wirdauthobject()nicht zuerst mitNoneaufgerufen.Wenn die Prüfung der initialen Antwort
Nonezurückgibt oder wenn initial_response_ok falsch ist, wirdauthobject()aufgerufen, um die Herausforderungsantwort des Servers zu verarbeiten. Das Argument challenge, das ihm übergeben wird, ist einbytes-Objekt. Es sollte ASCIIstrdata zurückgeben, die base64-kodiert und an den Server gesendet wird.Die Klasse
SMTPstelltauthobjectsfür die MechanismenCRAM-MD5,PLAINundLOGINbereit; sie sind entsprechendSMTP.auth_cram_md5,SMTP.auth_plainundSMTP.auth_loginbenannt. Sie alle erfordern, dass die EigenschaftenuserundpasswordderSMTP-Instanz auf entsprechende Werte gesetzt sind.Benutzercode muss
authnormalerweise nicht direkt aufrufen, sondern kann stattdessen die Methodelogin()aufrufen, die nacheinander jeden der obigen Mechanismen in der aufgeführten Reihenfolge versucht.authist freigelegt, um die Implementierung von Authentifizierungsmethoden zu erleichtern, die nicht direkt vonsmtplibunterstützt werden (oder noch nicht).Hinzugefügt in Version 3.5.
- SMTP.starttls(*, context=None)¶
Setzt die SMTP-Verbindung in den TLS-Modus (Transport Layer Security). Alle nachfolgenden SMTP-Befehle werden verschlüsselt. Sie sollten dann
ehlo()erneut aufrufen.Wenn keyfile und certfile angegeben sind, werden sie verwendet, um einen
ssl.SSLContextzu erstellen.Der optionale Parameter context ist ein
ssl.SSLContext-Objekt; dies ist eine Alternative zur Verwendung eines Schlüssel- und Zertifikatsdateis, und falls angegeben, sollten sowohl keyfile als auch certfileNonesein.Wenn zuvor kein
EHLO- oderHELO-Befehl in dieser Sitzung gesendet wurde, versucht diese Methode zuerst ESMTPEHLO.Geändert in Version 3.12: Die veralteten Parameter keyfile und certfile wurden entfernt.
SMTPHeloErrorDer Server hat nicht ordnungsgemäß auf die
HELO-Begrüßung reagiert.SMTPNotSupportedErrorDer Server unterstützt die STARTTLS-Erweiterung nicht.
RuntimeErrorSSL/TLS-Unterstützung ist für Ihren Python-Interpreter nicht verfügbar.
Geändert in Version 3.3: context wurde hinzugefügt.
Geändert in Version 3.4: Die Methode unterstützt jetzt Hostnamenprüfungen mit
ssl.SSLContext.check_hostnameund dem *Server Name Indicator* (sieheHAS_SNI).Geändert in Version 3.5: Der für mangelnde STARTTLS-Unterstützung ausgelöste Fehler ist nun die Unterklasse
SMTPNotSupportedErroranstelle der BasisklasseSMTPException.
- SMTP.sendmail(from_addr, to_addrs, msg, mail_options=(), rcpt_options=())¶
Mail senden. Die erforderlichen Argumente sind eine RFC 822-Absenderadresse (from-address) als String, eine Liste von RFC 822-Empfängeradressen (to-address) als Strings (ein nackter String wird als Liste mit einer Adresse behandelt) und eine Nachricht als String. Der Aufrufer kann eine Liste von ESMTP-Optionen (wie z. B.
8bitmime) übergeben, die inMAIL FROM-Befehlen als mail_options verwendet werden sollen. ESMTP-Optionen (wie z. B.DSN-Befehle), die mit allenRCPT-Befehlen verwendet werden sollen, können als rcpt_options übergeben werden. (Wenn Sie unterschiedliche ESMTP-Optionen für verschiedene Empfänger verwenden müssen, müssen Sie die Low-Level-Methoden wiemail(),rcpt()unddata()zum Senden der Nachricht verwenden.)Hinweis
Die Parameter from_addr und to_addrs werden verwendet, um die Nachrichten-Hülle zu konstruieren, die von den Transportagenten verwendet wird.
sendmailmodifiziert die Nachrichten-Header in keiner Weise.msg kann ein String sein, der Zeichen im ASCII-Bereich enthält, oder ein Byte-String. Ein String wird mit dem ASCII-Codec in Bytes kodiert, und einzelne
\r- und\n-Zeichen werden in\r\n-Zeichen umgewandelt. Ein Byte-String wird nicht modifiziert.Wenn zuvor kein
EHLO- oderHELO-Befehl in dieser Sitzung gesendet wurde, versucht diese Methode zuerst ESMTPEHLO. Wenn der Server ESMTP unterstützt, werden Nachrichtengröße und jede der angegebenen Optionen an ihn übergeben (sofern die Option im vom Server angebotenen Funktionsumfang enthalten ist). WennEHLOfehlschlägt, wirdHELOversucht und ESMTP-Optionen werden unterdrückt.Diese Methode gibt normal zurück, wenn die Nachricht für mindestens einen Empfänger akzeptiert wird. Andernfalls löst sie eine Ausnahme aus. Das heißt, wenn diese Methode keine Ausnahme auslöst, dann sollte jemand Ihre E-Mail erhalten. Wenn diese Methode keine Ausnahme auslöst, gibt sie ein Wörterbuch zurück, mit einem Eintrag für jeden Empfänger, der abgelehnt wurde. Jeder Eintrag enthält ein Tupel aus dem SMTP-Fehlercode und der begleitenden Fehlermeldung des Servers.
Wenn
SMTPUTF8in mail_options enthalten ist und der Server dies unterstützt, können from_addr und to_addrs Nicht-ASCII-Zeichen enthalten.Diese Methode kann die folgenden Ausnahmen auslösen
SMTPRecipientsRefusedAlle Empfänger wurden abgelehnt. Niemand hat die E-Mail erhalten.
SMTPHeloErrorDer Server hat nicht ordnungsgemäß auf die
HELO-Begrüßung reagiert.SMTPSenderRefusedDer Server hat die from_addr nicht akzeptiert.
SMTPDataErrorDer Server antwortete mit einem unerwarteten Fehlercode (außer einer Ablehnung eines Empfängers).
SMTPNotSupportedErrorSMTPUTF8wurde in mail_options angegeben, wird aber vom Server nicht unterstützt.
Sofern nicht anders angegeben, bleibt die Verbindung auch nach Auslösung einer Ausnahme geöffnet.
Geändert in Version 3.2: msg kann ein Byte-String sein.
Geändert in Version 3.5: Unterstützung für
SMTPUTF8hinzugefügt, undSMTPNotSupportedErrorkann ausgelöst werden, wennSMTPUTF8angegeben ist, der Server es aber nicht unterstützt.
- SMTP.send_message(msg, from_addr=None, to_addrs=None, mail_options=(), rcpt_options=())¶
Dies ist eine Komfortmethode zum Aufrufen von
sendmail()mit der Nachricht, die durch einemail.message.Message-Objekt repräsentiert wird. Die Argumente haben die gleiche Bedeutung wie fürsendmail(), außer dass msg einMessage-Objekt ist.Wenn from_addr
Noneist oder to_addrsNoneist, fülltsend_messagediese Argumente mit Adressen, die aus den Headern von msg extrahiert wurden, wie in RFC 5322 angegeben: from_addr wird auf das Feld Sender gesetzt, falls vorhanden, andernfalls auf das Feld From. to_addrs kombiniert die Werte (falls vorhanden) der Felder To, Cc und Bcc aus msg. Wenn genau eine Gruppe von Resent-* Headern in der Nachricht erscheint, werden die regulären Header ignoriert und stattdessen die Resent-* Header verwendet. Wenn die Nachricht mehr als eine Gruppe von Resent-* Headern enthält, wird einValueErrorausgelöst, da es keine Möglichkeit gibt, die aktuellste Gruppe von Resent- Headern eindeutig zu identifizieren.send_messageserialisiert msg mitBytesGeneratormit\r\nals linesep und ruftsendmail()auf, um die resultierende Nachricht zu übertragen. Unabhängig von den Werten von from_addr und to_addrs überträgtsend_messagekeine Bcc- oder Resent-Bcc-Header, die in msg vorkommen könnten. Wenn eine der Adressen in from_addr und to_addrs Nicht-ASCII-Zeichen enthält und der Server keineSMTPUTF8-Unterstützung anbietet, wird eineSMTPNotSupportedErrorausgelöst. Andernfalls wird dieMessagemit einer Kopie ihrerpolicyserialisiert, wobei das Attribututf8aufTruegesetzt ist, undSMTPUTF8undBODY=8BITMIMEwerden zu mail_options hinzugefügt.Hinzugefügt in Version 3.2.
Hinzugefügt in Version 3.5: Unterstützung für internationalisierte Adressen (
SMTPUTF8).
- SMTP.quit()¶
Beendet die SMTP-Sitzung und schließt die Verbindung. Gibt das Ergebnis des SMTP-Befehls
QUITzurück.
Low-Level-Methoden, die den Standard-SMTP/ESMTP-Befehlen HELP, RSET, NOOP, MAIL, RCPT und DATA entsprechen, werden ebenfalls unterstützt. Normalerweise müssen diese nicht direkt aufgerufen werden, daher sind sie hier nicht dokumentiert. Details finden Sie im Modulcode.
Zusätzlich hat eine SMTP-Instanz die folgenden Attribute
SMTP-Beispiel¶
Dieses Beispiel fordert den Benutzer zur Eingabe der Adressen auf, die für die Nachrichten-Hülle benötigt werden ('An' und 'Von'-Adressen), sowie der zu liefernden Nachricht. Beachten Sie, dass die mit der Nachricht zu versendenden Header in der eingegebenen Nachricht enthalten sein müssen; dieses Beispiel verarbeitet die RFC 822-Header nicht. Insbesondere müssen die 'An'- und 'Von'-Adressen explizit in den Nachrichten-Headern enthalten sein
import smtplib
def prompt(title):
return input(title).strip()
from_addr = prompt("From: ")
to_addrs = prompt("To: ").split()
print("Enter message, end with ^D (Unix) or ^Z (Windows):")
# Add the From: and To: headers at the start!
lines = [f"From: {from_addr}", f"To: {', '.join(to_addrs)}", ""]
while True:
try:
line = input()
except EOFError:
break
else:
lines.append(line)
msg = "\r\n".join(lines)
print("Message length is", len(msg))
server = smtplib.SMTP("localhost")
server.set_debuglevel(1)
server.sendmail(from_addr, to_addrs, msg)
server.quit()
Hinweis
Im Allgemeinen möchten Sie die Funktionen des Pakets email verwenden, um eine E-Mail-Nachricht zu erstellen, die Sie dann über send_message() versenden können; siehe email: Beispiele.