Python IMAP: =?utf-8?Q? in der Betreff-Zeichenfolge
Ich bin die Anzeige von neuen E-Mail mit IMAP
, und sieht alles gut, außer für einen Betreff für die Nachricht zeigt:
=?utf-8?Q?Subject?=
Wie kann ich es beheben?
- "Wie kann ich es beheben?" - Warum gehst du davon aus, dass es kaputt ist??
- Es sollte zeigen, "Subject:" - was in der =?utf-8?Q? ... ?
- en.wikipedia.org/wiki/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
In MIME-Terminologie, kodierten Blöcken aufgerufen werden codierte Wörter. Man kann Sie entschlüsseln, wie diese:
Check-out der Dokumente für
E-Mail.Header
für mehr details.email.header.decode_header
(mit Kleinbuchstabenm
) ist der generische name. Darüber hinaus, im codetext
ist eigentlich kein text, sondern eine Byte-variable.Dies ist eine MIME -encoded-word. Können Sie analysieren mit
E-Mail.header
:if isinstance(word, bytes) else word
und dieu
vor der'
; dieser code wurde entwickelt, um sowohl die arbeiten für Python 2 und 3.Versuchen Imbox
Weil
imaplib
ist eine sehr übertriebene low-level-Bibliothek und liefert Ergebnisse zurück, die hart arbeiten, mitInstallation
pip install imbox
Nutzung
In Python 3.3+, die parsing-Klassen und-Funktionen in E-Mail.parser automatisch entpacken "encoded words" im Kopf, wenn Ihr
policy
argument istpolicy.default
Den parsing-Klassen und-Funktionen sind:
Verwirrend ist, bis zu mindestens Python 3.7, die Standard-policy für diese Analyse-Funktionen nicht
policy.default
, aberpolicy.compat32
, die nicht nicht decode "encoded words".