【问题标题】:Python 3 imaplib.fetch TypeError: can't concat bytes to intPython 3 imaplib.fetch TypeError:无法将字节连接到 int
【发布时间】:2012-12-14 09:00:16
【问题描述】:

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

回溯(最近一次通话最后一次):
文件“./mail.py”,第 295 行,在
item=return_message(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
typ, dat = self._simple_command(name, message_set, message_parts)
_simple_command
中的文件“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py”,第 1113 行 return self._command_complete(name, self._command(name, *args))
_command
中的文件“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py”,第 883 行 数据 = 数据 + b' ' + arg
TypeError: can't concat bytes to 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)]

【问题讨论】:

  • 是的。消息 id 来自 x = (int(len(id_list)) - int(indexCounter))

标签: python imap


【解决方案1】:

message_set 是一个字符串,而不是一个 int。来自documentation

下面命令的message_set 选项是一个字符串,指定要处理的一条或多条消息。它可能是一个简单的消息号 ('1')、一个消息号范围 ('2:4') 或一组用逗号分隔的不连续范围 ('1:3,6:9')。范围可以包含一个星号来表示无限的上限 ('3:*')。

直接转成字符串就够了:

result, data = mail.fetch(str(message_id), "(RFC822)")

【讨论】:

  • 做到了。然而,我现在又遇到了一个错误,我应该在那里发布还是创建一个新问题?
  • 让我们发个新帖子吧,毕竟这是一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 2018-05-02
  • 2019-11-23
相关资源
最近更新 更多