1

IdleAsync新着メールの通知を受け取るために使用しています。

新しいメッセージが到着するたびに通知を受け取り、メッセージを読みたいのですが、メッセージを読み込もうとするImapClientと、アイドル状態の例外が発生します。

別のクライアントを作成する必要がありますImapClientか、それとも同じクライアントを使用して、新しいメッセージの通知の受信を停止せずにメッセージを読むことができますか?

4

3 に答える 3

3

Nameless One が指摘したように、MailKit の Idle() および IdleAsync() メソッドは、IDLE 状態を終了するために使用できる「完了」CancellationToken を取ります (「完了」トークンをキャンセルすると、DONE コマンドが送信され、IDLE が終了します)州)。

それが完了したら、メッセージをフェッチして、通常どおり続行できます。

一部の人々が行うもう 1 つのオプションは、2 つの ImapClients を持つことです。1 つは Idle() に使用され、もう 1 つはメッセージのフェッチに使用されます。

于 2014-11-28T14:05:16.053 に答える
2

IDLE 状態で送信できる唯一のコマンドは、IDLE を終了する DONE です。ポーリングを気にしない場合は、CONDSTORE を使用し、HIGHESTMODSEQ を使用して新しいメッセージを検出することを検討してください。

于 2014-11-27T17:27:25.620 に答える