My setup uses fetchmail to pull emails from Gmail, which are processed by procmail and passes it to a python script.
When I use email.message_from_string()
, the resulting object is not parsed as an email object. get_payload()
returns the header/body/payload text of the email as a single text blob.
This is the text it returns:
From [email protected] 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: [email protected]
Message-ID: <CAAsp4m0GBeVg80-ryFgNvNNAj_QPguzbX3DqvMSx-xSGZM18Pw@mail.gmail.com>
Subject: test 19:20
From: example <[email protected]>
To: example <[email protected]>
Content-Type: multipart/alternative; boundary=001a1133435474449004e42f7861--001a1133435474449004e42f7861
Content-Type: text/plain; charset=ISO-8859-119:20--001a1133435474449004e42f7861
Content-Type: text/html; charset=ISO-8859-1<div dir="ltr">19:20</div>--001a1133435474449004e42f7861--
My code:
full_msg = sys.stdin.read()
msg = email.message_from_string(full_msg)
msg['to'] # returns None
msg.get_payload() # returns the text above
What am I missing to get Python to properly interpret the email?
I see from these questions that I may not be getting the proper email headers somewhere along the line, but I cannot confirm. That ">" on line 2 is not a typo: it's in the text.