Python IMAP ライブラリを使用してメールを既読に設定しようとしています。この例のように: Python、IMAP、および GMail。メッセージを既読としてマークする
GMail アカウントの「すべてのメール」フォルダを選択し、検索コマンドを使用して特定のメールの UID を取得します。次に、その UID を使用して読み取り済みとしてマークしようとしましたが、失敗しました。
result, data = mail.uid('fetch', email_uid, '(FLAGS)')
print "RESULT: ",result,data
mail.select(folder_name, readonly=False)
result, data = mail.store(email_uid, '+FLAGS', '\\Seen')
print "RESULT OF OPERATION FOR UID",email_uid,result,data
このコードを何度実行しても、\Seen フラグを含まないフラグが常に取得されます。
実行例 (Django の出力を無視):
FINAL QUERY: (SENTSINCE 07-Mar-2013 SENTBEFORE 11-Mar-2013 LARGER 7508 SMALLER 7510)
RESULT: OK ['31424 (UID 54264 FLAGS (NotJunk $NotJunk))']
RESULT OF OPERATION FOR UID 54264 OK [None]
[09/Mar/2013 17:30:37] "GET /api/mark_as_read/320/?token=8e3c057b841b75c864685786b2a9657aadf17e3bfb991b103b7c4b3ffdd2a753&refresh_mode=all&folder_mode=inbox HTTP/1.1" 200 144
FINAL QUERY: (SENTSINCE 07-Mar-2013 SENTBEFORE 11-Mar-2013 LARGER 7508 SMALLER 7510)
RESULT: OK ['31424 (UID 54264 FLAGS (NotJunk $NotJunk))']
RESULT OF OPERATION FOR UID 54264 OK [None]
[09/Mar/2013 17:30:44] "GET /api/mark_as_read/320/?token=8e3c057b841b75c864685786b2a9657aadf17e3bfb991b103b7c4b3ffdd2a753&refresh_mode=all&folder_mode=inbox HTTP/1.1" 200 144
FINAL QUERY: (SENTSINCE 07-Mar-2013 SENTBEFORE 11-Mar-2013 LARGER 7508 SMALLER 7510)
RESULT: OK ['31424 (UID 54264 FLAGS (NotJunk $NotJunk \\Seen))']
RESULT OF OPERATION FOR UID 54264 OK [None]
複数のバリエーションを試しました。\Seen、Seen、\Seen、SEEN、括弧あり、括弧なしのフラグを設定しようとしましたが、これ以外に何を試すことができるかわかりません。
ここには非常に具体的な詳細があるのではないかと思います.GMailの「すべてのメール」フォルダでは、メールを既読にすることができないのでしょうか?
また、mail.store コマンドで返される (result,data) タプルで、data 変数が通常の実行のために "[None]" 変数を持つことになっているのかどうか、またはそれが何かを意味するのかどうかもわかりません。間違っている。
\\Seen のような間違ったフラグを設定しようとすると、mail.store コマンドでエラーが発生します。したがって、\Seen フラグを設定すると、有効な IMAP フラグになります。
次に何を試せばいいのかわからない。
どんな助けでも大歓迎です。