这是我的代码:
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].decode('utf-8')
此时,我收到错误消息
AttributeError: 'str' object has no attribute 'decode'
Python 3已经没有解码了,对吗?我该怎么解决?
另外,在:
data = conn.fetch('1', '(BODY[HEADER])')
我只选择第一封电子邮件。如何全选?
从Python 3开始,所有字符串都是unicode对象。
前面的代码是一样的。所以我认为您应该删除
.decode('utf-8')
。因为您已经获得了unicode对象。您正在尝试解码已解码的对象。你有一个
str
,不再需要从UTF-8解码。只需删除
.decode('utf-8')
部分:至于您的
fetch()
调用,您只是显式地请求第一条消息。如果要检索更多邮件,请使用范围。请参见documentation:按以下方法使用:
相关问题 更多 >
编程相关推荐