使用imaplib解析电子邮件文本正文

时间:2013-10-24 18:17:06

标签: python email imap imaplib

我想从Gmail(一般是imap服务器)获取电子邮件文本正文,而无需下载整个邮件。

如果我拿到RC822,我可以把一切都搞定:

mail_box.fetch(message_ids, '(RFC822)')

但问题是,如果我有太多邮件和附件,则需要花费很多时间。

我可以得到我需要的标题和文本正文:

mail_box.fetch(message_ids, '(RFC822.HEADER BODY.PEEK[1])')

但这种方式我无法解析文本正文,它有一种奇怪的格式:

'\r\n------=_NextPart_001_0011_01CB63DF.D39BA1C0\r\nContent-Type: text/plain;\r\n\tcharset="iso-8859-1"\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\nRafael, ...other content like html tags and css...------=_NextPart_001_0011_01CB63DF.D39BA1C0--\r\n'

试图用email.message_from_string和quopri模块解析它,但到目前为止还没有运气。

有可能吗?获取格式化为RFC822但不下载附件的邮件?

1 个答案:

答案 0 :(得分:0)

正确的方法是请求邮件的BODYSTRUCTURE并仅获取相关部分。

在评论中,您建议您已提取BODYSTRUCTURE,并且部分1对应于text/plain MIME部分。请告诉我们整个未经处理的BODYSTRUCTURE;如果没有它,我们无法判断您使用的IMAP服务器是否有错误,或者您对BODYSTRUCTURE的理解是否错误。