Python 3 imaplib.fetch TypeError:无法将字节连接到int

3 python imap

我有一些代码可以获取IMAP电子邮件,并且在Python 2中运行得很好.在Python3中,我收到以下错误:

回溯(最近一次调用最后一次):
文件"./mail.py",第295行,在
item = return_message(x)
文件"./mail.py",第122行,在return_message
结果中,data = mail.fetch(message_id ,"(RFC822)")
文件"/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py",第460行,获取
类型,dat = self._simple_command(name,message_set, message_parts)
文件"/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py",第1113行,在_simple_command中
返回self._command_complete(name,self._command(name,*args))
文件"/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py",第883行,在_command
data = data + b''+ arg
TypeError:无法将字节连接到int

return_message函数的代码:

result, data = mail.fetch(message_id, "(RFC822)")
raw_email = data[0][1]
email_message = email.message_from_string(raw_email)
Run Code Online (Sandbox Code Playgroud)

运行时信息:

3.3.0(v3.3.0:bd8afb90ebf2,Sep 29 2012,01:25:11)
[GCC 4.2.1(Apple Inc. build 5666)(第3点)]

Mar*_*ers 7

message_set是一个字符串,而不是int.从文档:

message_set以下命令的选项是一个字符串,指定要对其执行的一条或多条消息.它可以是简单的消息号('1'),一系列消息号('2:4'),或由逗号('1:3,6:9')分隔的一组非连续范围.范围可以包含星号以指示无限上限('3:*').

直接将其转换为字符串就足够了:

result, data = mail.fetch(str(message_id), "(RFC822)")
Run Code Online (Sandbox Code Playgroud)

  • 让我们做一个新帖子,毕竟这是一个新问题. (2认同)