使用Imap - Mail编码怪异

时间:2013-11-05 10:43:06

标签: python email encoding python-3.x imaplib

我正在使用imap从服务器检索邮件,工作正常。我正在这样获取RFC 822中的邮件:

r, data = mailserver.fetch(mailnr, '(RFC822)')

这给了我大部分可以辨认的邮件,但现在我有一个看起来像这样的多部分邮件:

  

来自:xxx xxx

     

收件人:xxx xxx

     

主题:   =?utf-8?Q?online_verf = C3 = BCgbar _-_ TESTQUELLE_f = C3 = BCr_Regel?= =?utf-8?Q?-_ u_Benachrichtigungdienst _()?=

     

内容类型:multipart / alternative;     boundary =“---- = _ NextPart_457512452482695058637”

     

Content-Transfer-Encoding:无

     

MIME-Version:1.0

     

有效载荷:

     

= 20   = 20 sourcename:TESTQUELLE f = C3 = BCr Regel- u Benachrichtigungdienst; csi:123456 =; publishdate:05 = 2E11 = 2E2013

邮件似乎是utf-8但不知何故文本也是网址编码或类似的东西。

似乎仅使用url编码而不是“%”使用“=”。

关于如何让它看起来像普通文本的任何想法?

2 个答案:

答案 0 :(得分:1)

数据似乎是已编码为UTF-8的unicode文本,然后编码为quotable-printable。有一个模块“quopri”来对此进行编码/解码 - http://docs.python.org/3.3/library/quopri.html

如果您使用quopri.decodestring解码为UTF-8,然后将其解码为unicode,则yuo应该能够读取它。

答案 1 :(得分:1)

终于找到了这个:

mail.get_payload(decode=1).decode('utf-8')

我只使用了给我字符串的get_payload()。