我正在使用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编码而不是“%”使用“=”。
关于如何让它看起来像普通文本的任何想法?
答案 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()。