poplib错误3.3而不是2.7:消息号

时间:2016-11-03 07:16:48

标签: python email-attachments python-3.3

我在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'"

1 个答案:

答案 0 :(得分:0)

您正尝试传递str作为消息编号。更改以下行

msg_num, _ = msg.split()

msg_num = int(msg.split()[0])