2016-11-03 16 views
0

私は、Python 3.3にpoplibを使用してコードからエラーを取得しますがPythonの2.7上で動作しています:poplibとエラー:無効なメッセージ番号

poplib.error_proto: b"-ERR Invalid message number: b'1'" 

私は3.3をPythonのために移行するため、I私の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

ようこそに次の行

msg_num, _ = msg.split() 

を変更します。特に[mcve]の作成方法については[ask]をお読みください。 –

+0

あなたはそれがうまくいかないことをどのように知っていますか?それでもエラーが発生する最小限のコードは何ですか。 –

+0

@PeterWood私はすでにそれを試して、 resp = p.retr(msg_num) それはPython 2.7では動作しますが、Python 3.3では動作しません。試してみましたか? –

答えて

0

あなたはメッセージ番号としてstrを渡そうとしています。スタックオーバーフローへ

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

ええ、それは 私は動作しない場合resp [0] .startswith( '+ OK'):also email.message_from_string( '\ n'.join(resp [1]))これは動作していない、そこにあります任意の代替? –

+0

@ADityaBimantaraあなたが答えを見つけることができなかったならば、新しい質問をする –

+0

@PeterWood helloo、すでに解決済み、ありがとう:) 私は書く必要がありますか? –

関連する問題