如何使用email.Parser从文件中提取电子邮件正文?

时间:2015-10-12 14:37:53

标签: python email

我正在尝试使用python和email.Parser来解析文件中的电子邮件。我使用以下命令

headers = Parser().parse(open(filename, 'r'))

解析文件。但是,当我尝试使用身体时,例如。

print(headers.get_payload()[0])

我得到像

这样的东西
From nobody Mon Oct 12 16:32:25 2015
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi Alex,
....

有没有办法摆脱前三/四行?以及如何解码'fr = C3 = BCher'等内容?

2 个答案:

答案 0 :(得分:3)

要进入邮件正文,你必须走()它的不同部分,即:

a = email.message_from_file(open(filename, 'r')) #shorthand for Parser().parse
body = ''

if a.is_multipart():
   for part in b.walk():
       ctype = part.get_content_type()
       cdispo = str(part.get('Content-Disposition'))

       # skip any text/plain (txt) attachments
       if ctype == 'text/plain' and 'attachment' not in cdispo:
           body = part.get_payload(decode=True)  # decode
           break
# not multipart - i.e. plain text, no attachments
else:
    body = b.get_payload(decode=True)

get_payload()中的decode = True执行base64 / etc解码,即'fr = C3 = BCher'字符串

答案 1 :(得分:0)