3

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 フラグになります。

次に何を試せばいいのかわからない。

どんな助けでも大歓迎です。

4

2 に答える 2