Python email.message_from_string () parse Probleme

Mein Setup nutzt fetchmail, um E-Mails aus Gmail zu ziehen, die von procmail verarbeitet werden und es an ein Python-Skript übergibt.

Wenn ich email.message_from_string() , wird das resultierende Objekt nicht als E-Mail-Objekt analysiert. get_payload() gibt den Header / body / payload Text der E-Mail als Einzeltext-Blob zurück.

Dies ist der Text, den es zurückgibt:

 From example@gmail.com Sat Aug 17 19:20:44 2013 >From example Sat Aug 17 19:20:44 2013 MIME-Version: 1.0 Received: from ie-in-f109.1e100.net [74.125.142.109] by VirtualBox with IMAP (fetchmail-6.3.21) for <example@localhost> (single-drop); Sat, 17 Aug 2013 19:20:44 -0700 (PDT) Received: by 10.70.131.110 with HTTP; Sat, 17 Aug 2013 19:20:42 -0700 (PDT) Date: Sat, 17 Aug 2013 19:20:42 -0700 Delivered-To: example@gmail.com Message-ID: <CAAsp4m0GBeVg80-ryFgNvNNAj_QPguzbX3DqvMSx-xSGZM18Pw@mail.gmail.com> Subject: test 19:20 From: example <example@gmail.com> To: example <example@gmail.com> Content-Type: multipart/alternative; boundary=001a1133435474449004e42f7861 --001a1133435474449004e42f7861 Content-Type: text/plain; charset=ISO-8859-1 19:20 --001a1133435474449004e42f7861 Content-Type: text/html; charset=ISO-8859-1 <div dir="ltr">19:20</div> --001a1133435474449004e42f7861-- 

Mein Code:

 full_msg = sys.stdin.read() msg = email.message_from_string(full_msg) msg['to'] # returns None msg.get_payload() # returns the text above 

Was fehlt mir, um Python zu bekommen, um die E-Mail richtig zu interpretieren?

Ich sehe aus diesen Fragen, dass ich vielleicht nicht die richtigen E-Mail-Header irgendwo entlang der Linie, aber ich kann nicht bestätigen. Das ">" auf Zeile 2 ist kein Tippfehler: es ist im Text.

  • Problem mit E-Mail-Parsing mit Python und mehrere empfangene Datensätze
  • One Solution collect form web for “Python email.message_from_string () parse Probleme”

    Unabhängig von ">" Sein "im Text", wie Sie sagen, was auch immer das bedeutet – es ist falsch Nach dem Entfernen dieses Zeichens:

    >python test.py <input.txt
    example <example@gmail.com>
    [<email.message.Message instance at 0x02810288>, <email.message.Message instance at 0x02810058>]

    Also der Fehler ist nicht in der Parsing der Nachricht, sondern in der ">" Charakter irgendwie korrumpiert Ihre E-Mail-Text.

    Python ist die beste Programmiersprache der Welt.