email.encoders: Kodierer¶
Quellcode: Lib/email/encoders.py
Dieses Modul gehört zur alten E-Mail-API (Compat32). In der neuen API übernimmt der Parameter cte der Methode set_content() diese Aufgabe.
Dieses Modul ist in Python 3 veraltet. Die hier angebotenen Funktionen sollten nicht ausdrücklich aufgerufen werden, denn die Klasse MIMEText setzt den Inhaltstyp und den CTE-Header anhand der Werte _subtype und _charset, die beim Erzeugen dieser Klasse übergeben werden.
Der restliche Text dieses Abschnitts ist die ursprüngliche Dokumentation des Moduls.
Wenn du Message-Objekte von Grund auf erzeugst, musst du die Nutzdaten oft kodieren, damit sie sich über standardkonforme Mailserver übertragen lassen. Das gilt besonders für Nachrichten vom Typ image/* und text/*, die Binärdaten enthalten.
Das Paket email bietet in seinem Modul encoders einige praktische Kodierer. Diese Kodierer verwenden auch die Konstruktoren der Klassen MIMEAudio und MIMEImage für ihre voreingestellten Kodierungen. Alle Kodiererfunktionen nehmen genau ein Argument, nämlich das zu kodierende Nachrichtenobjekt. Üblicherweise holen sie die Nutzdaten heraus, kodieren sie und setzen die Nutzdaten auf diesen neu kodierten Wert. Außerdem sollten sie den Content-Transfer-Encoding-Header passend setzen.
Beachte, dass diese Funktionen für eine mehrteilige Nachricht nicht sinnvoll sind. Sie müssen stattdessen auf die einzelnen Teile angewandt werden und lösen TypeError aus, wenn ihnen eine Nachricht vom Typ multipart übergeben wird.
Hier die angebotenen Kodierfunktionen:
- email.encoders.encode_quopri(msg)¶
Kodiert die Nutzdaten in die Form quoted-printable und setzt den Content-Transfer-Encoding-Header auf
quoted-printable[1]. Diese Kodierung eignet sich gut, wenn deine Nutzdaten überwiegend aus gewöhnlichen druckbaren Daten bestehen, aber ein paar nicht druckbare Zeichen enthalten.
- email.encoders.encode_base64(msg)¶
Kodiert die Nutzdaten in die Form base64 und setzt den Content-Transfer-Encoding-Header auf
base64. Diese Kodierung eignet sich gut, wenn deine Nutzdaten überwiegend aus nicht druckbaren Daten bestehen, denn sie ist kompakter als quoted-printable. Ihr Nachteil: Der Text ist für Menschen nicht mehr lesbar.
- email.encoders.encode_7or8bit(msg)¶
Das ändert die Nutzdaten der Nachricht nicht, setzt aber den Content-Transfer-Encoding-Header je nach Nutzdaten passend auf
7bitoder8bit.
- email.encoders.encode_noop(msg)¶
Das tut nichts. Es setzt nicht einmal den Content-Transfer-Encoding-Header.
Fußnoten