这是我的代码连接到gmail并解析电子邮件:
import imaplib
from email.parser import HeaderParser
conn = imaplib.IMAP4_SSL('imap.gmail.com')
conn.login('example@gmail.com', 'password')
conn.select()
conn.search(None, 'ALL')
data = conn.fetch('1', '(BODY[HEADER])')
header_data = data[1][0][1]
parser = HeaderParser()
msg = parser.parsestr(header_data)
在此阶段我收到错误消息" TypeError:initial_value必须是str或None,而不是字节"
我正在使用python 3.如何将结果转换为字符串,以便ican使用parser.parsestr解析标题?
答案 0 :(得分:3)
替换
header_data = data[1][0][1]
带
header_data = data[1][0][1].decode('utf-8')
这应该使它适用于Python 3.x.x
这是迁移代码以使其成为Python 3的难点之一,但一旦理解了它,就很容易修复。此外,如果您进行了更改,它将破坏与python 2.x.x的兼容性
在python 3中,所有字符串都是unicode,如果收到字节,则必须先将它们转换为str
数据类型。 You can read more about that here