2013-06-28 40 views
5

ここで、インターネット上で検索すると、メッセージがIMAPで自動的に表示されるにもかかわらず、メッセージをSEENとマークする方法がたくさんあります。python imaplib - 電子メールを未読または未読としてマーク

しかし、メールにUNSEENまたはUNREADとマークするにはどうすればよいですか。

私はUNSEENメッセージを受け取るスクリプトをPythonで持っています。しかし、それを読んだら、imapはそれを自動的にSEENとマークしますが、スクリプトにエラーがない場合のみ、例外が発生した場合はメールを再度UNSEENとマークして、スクリプトがそのメッセージを読むようにします再び。

これをどのように達成できますか?

私もmail.select(mail_label,readonly=True)を使用しましたが、それでもメッセージが表示されないので、私にも必要なのはSEENです。また、Gmailでこの機能を使用したいと考えています。

答えて

5

あなたは簡単にこのコマンドを使用して\Seenフラグをクリアすることができます。

tag UID STORE -FLAGS (\Seen) 

をしかし、あなたがメッセージを正常に処理した後でのみ、最初の場所で\Seenフラグを設定した場合、あなたのソフトウェアは、おそらくよりrobostになります。そうすれば、メッセージを処理している間に何かがうまくいかない場合(たとえIMAPサーバーへの接続が切断されたとしても)、フラグは設定されずに残り、次回スクリプトが実行されたときにそのメッセージを再試行できます。これを行うには、BODYの代わりにBODY.PEEKを使用して、IMAPサーバーの\Seenフラグの自動設定を回避します。

Pythonでは、私はだと思います。このようにSTOREコマンドを発行する必要がありますが、試していません。

(typ, [data]) = <instance>.store(message_set, command, flags) 

ので、次の行は、あなたが読むためのメッセージを設定できます( '+ FLAGS')またはUNREAD( '-FLAGS':Pythonで

connection.uid('STORE', '-FLAGS', '(\Seen)') 
+0

は、私が使用: '.fetch(NUM、 '(BODY.PEEK [])')'。 –

5

は、imaplibモジュールはとしてSTOREを説明します) 要求に応じ。

connection.uid('STORE', MESSAGE_ID, '+FLAGS', '\SEEN') 

ご覧のとおり、秘密はFLAGSコマンドであり、PEEKと、imaplibを使用して)

関連する問題