1

私は IMAP クライアント (より正確には JavaMail) の実装を扱っています。これは、IMAP idle() コマンドを使用して、サーバーから直接新しい電子メール通知を取得し、ポーリングする必要はありません。

ここに私の質問があります: 接続を維持するために、このアイドル コマンドを送信した後 (つまり、IMAP idle() を再度送信し、メッセージの数を要求するだけ) 他のことを行う必要がありますか?

別の言い方をすれば: 以前に idle() コマンドを送信したにもかかわらず、このサーバーは現在の IMAP 接続を閉じることができますか?

Stackoverflow や他のサイトで多くの質問やコードを見つけましたが、まだ満足していません。そこにIMAPプロトコルの専門家がいることを願っています.

ありがとう!

4

2 に答える 2

1

プロトコルは、IDLE であっても 30 分後にサーバーが接続を切断する可能性があることを示しています。

IDLE を終了し、少なくとも 30 分ごとに再発行する必要があります。また、Lt.Worf が示すように、ソケットは他の多くの理由で閉じられている可能性があります。

于 2012-11-29T15:47:31.147 に答える
1

サーバーはおそらくあなたを切断しませんが、ソケットの安定性に決して依存しないでください.接続はいくつかの異なる理由で切断される可能性があり、例外を適切にインターセプトし、おそらくタイムアウトを増やした後に再度接続を試みる必要があります.

たとえば、KMail はピラミッドの次に接続が世界で最も永続的なものであると考えているため、ラップトップを一時停止して別の場所に移動した後、再起動して IMAP サーバーに再度接続する必要があります。

于 2012-11-29T14:09:44.503 に答える