2

IMAPサーバーと対話するためにimaplib2docs )を使用しています。

タイムアウトとコールバックを使用して、idleコマンドを使用しています。

問題は、タイムアウトに達したためにコールバックがトリガーされたかどうか、またはサーバーにチェックアウトする必要のある変更があったかどうかを判断する方法が見当たらないことです。

私は('OK', ['IDLE terminated (Success)'])毎回得るだけです。

両方の場合のデバッグ出力は次のとおりです。

タイムアウトしました:

15:43.94 MainThread server IDLE started, timeout in 5.00 secs
15:48.94 imap.gmail.com handler server IDLE timedout
15:48.94 imap.gmail.com handler server IDLE finished
15:48.94 imap.gmail.com writer > DONE\r\n
15:49.17 imap.gmail.com reader < DDDM6 OK IDLE terminated (Success)\r\n
15:49.17 imap.gmail.com handler _request_pop(DDDM6, ('OK', ['IDLE terminated (Success)']))

何かあった:

18:41.34 MainThread server IDLE started, timeout in 50.00 secs
19:01.35 imap.gmail.com reader < * 1 EXISTS\r\n
19:01.37 imap.gmail.com handler server IDLE finished
19:01.37 imap.gmail.com writer > DONE\r\n
19:01.59 imap.gmail.com reader < BFCN6 OK IDLE terminated (Success)\r\n
19:01.59 imap.gmail.com handler _request_pop(BFCN6, ('OK', ['IDLE terminated (Success)']))

私は何が欠けていますか?

機能はimaplib2に存在しないだけですか?

4

2 に答える 2

4

Piers Lauder(imaplib2の作者)は、imaplib2-develメーリングリストでこの質問に答えました。彼は言った:

IDLEがタイムアウトしたかどうかをテストする方法は、次を実行することだと思います。

instance.response('IDLE')

これが返されます:

('IDLE', ['TIMEOUT'])

アイドルが他の何か(など('IDLE', [None]))ではなく、タイムアウトとして戻った理由。

これを文書化する必要があることに同意するので、imaplib2.html文書を修正します

于 2011-12-07T22:12:49.697 に答える
0

この応答を受け取るたびに、新しいメッセージを手動で確認する必要があります。メッセージのUIDをリストに保存し、コールバックごとに新しいUIDを比較できます。このようにして、新しいメッセージやタイムアウトがあるかどうかを簡単に判断できます。

于 2011-04-24T17:58:37.943 に答える