3.3 而非 2.7 的 poplib 错误:消息编号无效
poplib error with 3.3 not 2.7: Invalid message number
我在 Python 3.3 上使用 poplib
从代码中收到错误,但它适用于 Python 2.7:
poplib.error_proto: b"-ERR Invalid message number: b'1'"
我想迁移到 python 3.3 因为我有一个特定模块只安装在我的 python 3.3.
我正在学习 python 编程语言。
这是在 python 2.7 上成功的示例,但此示例代码不适用于我的 python 3.3.
import poplib
pop_server = 'mail01.org'
user = 'user'
password = 'pass'
p = poplib.POP3(pop_server)
p.user(user)
p.pass_(password)
print ("This mailbox has %d messages, totaling %d bytes." % p.stat())
msg_list = p.list()
print (msg_list)
for msg in msg_list[1]:
msg_num, _ = msg.split()
resp = p.retr(msg_num)
这是输出:
This mailbox has 2 messages, totaling 633300 bytes.
(b'+OK 2 messages:', [b'1 137956', b'2 495344'], 20)
这是错误回溯:
Traceback (most recent call last):
File "AttachmentDownloader.py", line 28, in <module>
resp = p.retr(msg_num)
File "C:\Python33\lib\poplib.py", line 236, in retr
return self._longcmd('RETR %s' % which)
File "C:\Python33\lib\poplib.py", line 171, in _longcmd
return self._getlongresp()
File "C:\Python33\lib\poplib.py", line 147, in _getlongresp
resp = self._getresp()
File "C:\Python33\lib\poplib.py", line 140, in _getresp
raise error_proto(resp)
poplib.error_proto: b"-ERR Invalid message number: b'1'"
您正在尝试传递 str
作为消息编号。更改以下行
msg_num, _ = msg.split()
至
msg_num = int(msg.split()[0])
我在 Python 3.3 上使用 poplib
从代码中收到错误,但它适用于 Python 2.7:
poplib.error_proto: b"-ERR Invalid message number: b'1'"
我想迁移到 python 3.3 因为我有一个特定模块只安装在我的 python 3.3.
我正在学习 python 编程语言。
这是在 python 2.7 上成功的示例,但此示例代码不适用于我的 python 3.3.
import poplib
pop_server = 'mail01.org'
user = 'user'
password = 'pass'
p = poplib.POP3(pop_server)
p.user(user)
p.pass_(password)
print ("This mailbox has %d messages, totaling %d bytes." % p.stat())
msg_list = p.list()
print (msg_list)
for msg in msg_list[1]:
msg_num, _ = msg.split()
resp = p.retr(msg_num)
这是输出:
This mailbox has 2 messages, totaling 633300 bytes.
(b'+OK 2 messages:', [b'1 137956', b'2 495344'], 20)
这是错误回溯:
Traceback (most recent call last):
File "AttachmentDownloader.py", line 28, in <module>
resp = p.retr(msg_num)
File "C:\Python33\lib\poplib.py", line 236, in retr
return self._longcmd('RETR %s' % which)
File "C:\Python33\lib\poplib.py", line 171, in _longcmd
return self._getlongresp()
File "C:\Python33\lib\poplib.py", line 147, in _getlongresp
resp = self._getresp()
File "C:\Python33\lib\poplib.py", line 140, in _getresp
raise error_proto(resp)
poplib.error_proto: b"-ERR Invalid message number: b'1'"
您正在尝试传递 str
作为消息编号。更改以下行
msg_num, _ = msg.split()
至
msg_num = int(msg.split()[0])