我有一些代码可以获取 IMAP 电子邮件,并且在 Python 2 中运行得很好。在 Python3 中,我收到以下错误:
回溯(最近一次调用最后一次):
文件“./mail.py”,第 295 行,位于
项目=返回消息(x)
文件“./mail.py”,第 122 行,return_message
结果,数据= mail.fetch(message_id,“(RFC822)”)
文件“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py”,第 460 行,在 fetch 中
典型,数据= self._simple_command(名称,message_set,message_parts)
文件“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py”,第 1113 行,在 _simple_command 中
返回 self._command_complete(名称, self._command(名称, *args))
文件“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py”,第 883 行,在 _command 中
数据 = 数据 + b' ' + arg
类型错误:无法将字节连接到 int
return_message 函数的代码:
result, data = mail.fetch(message_id, "(RFC822)")
raw_email = data[0][1]
email_message = email.message_from_string(raw_email)
运行时信息:
3.3.0(v3.3.0:bd8afb90ebf2,2012 年 9 月 29 日,01:25:11)
[GCC 4.2.1(Apple Inc. build 5666)(点 3)]
message_set
是一个字符串,而不是一个整数。来自文档 http://docs.python.org/3/library/imaplib.html:
The message_set
下面命令的选项是一个字符串,指定要执行的一条或多条消息。它可能是一个简单的消息号码('1'
),一系列消息编号('2:4'
),或一组用逗号分隔的不连续范围 ('1:3,6:9'
)。范围可以包含星号来指示无限上限 ('3:*'
).
直接将其转换为字符串应该就足够了:
result, data = mail.fetch(str(message_id), "(RFC822)")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)