IdleAsync
新着メールの通知を受け取るために使用しています。
新しいメッセージが到着するたびに通知を受け取り、メッセージを読みたいのですが、メッセージを読み込もうとするImapClient
と、アイドル状態の例外が発生します。
別のクライアントを作成する必要がありますImapClient
か、それとも同じクライアントを使用して、新しいメッセージの通知の受信を停止せずにメッセージを読むことができますか?
Nameless One が指摘したように、MailKit の Idle() および IdleAsync() メソッドは、IDLE 状態を終了するために使用できる「完了」CancellationToken を取ります (「完了」トークンをキャンセルすると、DONE コマンドが送信され、IDLE が終了します)州)。
それが完了したら、メッセージをフェッチして、通常どおり続行できます。
一部の人々が行うもう 1 つのオプションは、2 つの ImapClients を持つことです。1 つは Idle() に使用され、もう 1 つはメッセージのフェッチに使用されます。
IDLE 状態で送信できる唯一のコマンドは、IDLE を終了する DONE です。ポーリングを気にしない場合は、CONDSTORE を使用し、HIGHESTMODSEQ を使用して新しいメッセージを検出することを検討してください。