Python 3.4 email ContentManager - wie benutzt man?

8

Ich könnte zugeschlagen werden, weil diese Frage zu weit gefasst ist, aber ich werde sowieso fragen, was mache ich sonst noch? Wenn ich den Python-Quellcode durchforste, sollte mir das sicherlich genug "gute Mühe" geben, um mir zu helfen?

Ich versuche, den neuen E-Mail-Content-Manager von Python 3.4 Ссылка

Es ist mein Verständnis, dass dies mir erlauben sollte, eine E-Mail-Nachricht zu lesen, dann in der Lage sein, auf alle E-Mail-Header-Felder und Textkörper als UTF-8 zuzugreifen, ohne den schmerzhaften Prozess der Dekodierung von irgendeiner seltsamen Kodierung zurück in sauber zu machen UTF-8. Ich verstehe, ist auch Handles Parsing von Datumsköpfen und E-Mail-Adressen-Header. Das Lesen von E-Mails in Python wird generell einfacher. Tolles Zeug, sehr interessant.

Ich bin jedoch ein Anfänger-Programmierer - es gibt keine Beispiele in der aktuellen Dokumentation, wie man von Anfang an startet. Ich brauche ein einfaches Beispiel, das zeigt, wie man eine E-Mail-Datei liest und den neuen E-Mail-Content-Manager verwendet, die Header-Felder, Adressfelder und body /

zurückliest

Ich habe in den Python 3.4-Quellcode gegraben und die Tests für den E-Mail-Content-Manager angeschaut. Ich gebe zu, genügend amatuerisch zu sein, dass ich zu verwirrt war, um genug von den Tests zu lernen, um damit anzufangen, mein eigenes einfaches Beispiel zu schreiben.

Also, ist jemand bereit, mit einem einfachen Beispiel zu helfen, wie man den Python 3.4 E-Mail-Content-Manager benutzt, um die Header-Felder und Text- und Adressfelder einer E-Mail zu lesen?

Danke

    
Duke Dougal 30.01.2014, 06:08
quelle

2 Antworten

3

Erstens: Die "Adressfelder" in einer E-Mail sind in der Tat einfach Header, deren Namen in Standards wie To und From vereinbart wurden. Alles, was Sie brauchen, sind die E-Mail-Header und der Text, und Sie sind fertig.

Wenn eine moderne contentmanager -powered EmailMessage -Instanz wie Python 3.4 zurückgegeben wird, wenn Sie beim Einlesen einer E-Mail-Nachricht eine Richtlinie angeben (wie default ), können Sie auf ihre automatisch dekodierten Header zugreifen, indem Sie sie wie folgt behandeln ein Python-Wörterbuch und sein Textkörper mit dem get_body() -Aufruf. Hier ist ein Beispiel-Skript, das ich geschrieben habe, das beide Manöver auf sichere und standardmäßige Weise durchführt:

Ссылка

Hinter den Kulissen ist die Richtlinie das, was wirklich dafür zuständig ist, was sowohl Kopfzeilen als auch Inhalt betrifft - wobei die Richtlinie default die Header automatisch den Kodierungs- und Dekodierungsfunktionen in email.utils und Inhalt der Logik unterwirft gefragt, dass das in contentmanager ist.

Aber als Anrufer brauchen Sie normalerweise die Magie hinter den Kulissen nicht zu kennen, da die Header "einfach funktionieren" und der Inhalt leicht durch die Methoden, die im obigen Skript dargestellt sind, aufgerufen werden kann.

    
Brandon Rhodes 27.03.2014 19:32
quelle
0

Wenn Sie eine E-Mail in einer Datei haben und diese in Python lesen möchten, ist dies email.Parser solltest du dir wahrscheinlich zuerst ansehen . Wie Brandon , sehe ich nicht unbedingt, dass contentmanager verwendet werden muss, aber vielleicht ist Ihre Frage zu breit und Sie müssen mir helfen, es besser zu verstehen.

Code könnte wie folgt aussehen:

%Vor%

Es gibt sogar Komfortfunktionen, und die für Ihren Fall wäre:

%Vor%

Überprüfen Sie anschließend die Dokumentation in email.message , um zu erfahren, wie Sie auf den Inhalt der Nachricht zugreifen können. Sie können mit is_multipart() prüfen, ob es sich um einen einzelnen monolithischen Textblock oder eine MIME-Nachricht handelt, die aus mehreren Teilen besteht. Im letzteren Fall gibt es walk() , um über jeden Teil zu iterieren.

    
cfi 27.03.2014 21:23
quelle

Tags und Links