1

以下のコードを使用して、Gmailアカウントからメールを読みました。

import poplib
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('user')             # result: '+OK send PASS'
pop_conn.pass_('password')        # result: '+OK Welcome.'
print pop_conn.list()[1]
pop_conn.quit()

期待どおりに1つのメッセージが表示されます。
ただし、このスクリプトを 2 回目に実行すると、結果として 0 メッセージが表示されます。サーバー上では、メッセージはまだそこにあり、未読です。
スクリプトを 2 回目に実行しているすべてのメッセージを取得するにはどうすればよいですか?

私にとっては、同じメールを 2 回ダウンロードしない電子メール クライアントとして動作します。プログラムにすべてを再度ダウンロードさせるフラグはありますか? ubuntu 12.10でpython 2.7.xを使用しています

4

1 に答える 1

1

それが起こったときにあなたがしていたのはそれだけですか?私の知る限り、 を使用するだけlist()ではそうすべきではありませんがretr()、メッセージの内容も読んでいた場合、POP3 サーバーはメッセージにマークを付けて、それ以降の接続でそれを返さなくなります。

代わりに IMAP を使用してみてください。動作をより詳細に指定できるためです。メッセージを既読としてマークしないように指示でき、メッセージを複数回取得できるようになります。Google は IMAP をサポートしており、Python にはそれを使用するための imaplib があります。

于 2012-10-25T05:15:50.173 に答える