在电子邮件中尾随等号(=)

时间:2014-12-11 11:01:25

标签: python email character-encoding quoted-printable poplib

我使用POP3从Gmail帐户下载邮件,并将其保存在SQLite数据库中以便进一步处理:

mailbox = poplib.POP3_SSL('pop.gmail.com', '995') 
mailbox.user(user) 
mailbox.pass_(password)

msgnum = mailbox.stat()[0]

for i in range(msgnum):
    msg = '\n'.join(mailbox.retr(i+1)[1])
    save_message(msg, dbmgr)

mailbox.quit()

但是,查看数据库,除了消息体(有效负载)的最后一行之外的所有行都具有等号。你知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

弗雷德里克的链接引导我回答。编码被称为"引用可打印" (wiki)并且可以使用quopri Python模块(documentation)对其进行解码:

msg.decode('quopri').decode('utf-8')

答案 1 :(得分:0)

针对python 3.x的更新

您现在必须调用codecs模块。

import codecs
bytes_msg = bytes(msg, 'utf-8')
decoded_msg = codecs.decode(bytes_msg, 'quopri').decode('utf-8')