2016-11-03 11 views
0

Я получаю ошибку из кода с использованием poplib на Python 3.3, но который работает на Python 2.7:ошибка poplib с 3,3 не 2,7: Invalid сообщение номер

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'" 
+0

Добро пожаловать на переполнение стека. Пожалуйста, прочитайте [ask], в частности, как создать [mcve]. –

+0

Откуда вы знаете, что это не работает? Каков минимальный код для получения ошибки. –

+0

@PeterWood я уже пробовал, resp = p.retr (msg_num) он будет работать на python 2.7, но не работает на python 3.3. вы пытаетесь? –

ответ

0

Вы пытаетесь передать str как номер сообщения. Измените следующую строку

msg_num, _ = msg.split() 

в

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

Да, это работает, , тогда мой if не работает, если resp [0] .startswith ('+ OK'): также email.message_from_string ('\ n'.join (resp [1])), это не работает, есть ли любая альтернатива? –

+0

@ADityaBimantara задайте новый вопрос, если вы не смогли найти ответ –

+0

@PeterWood helloo ,, уже решил, спасибо :) если я хочу поделиться своим окончательным кодом, который может загрузить вложение электронной почты в python 3.3, где Должен ли я писать? –