IMAPクライアントを実装していますが、IMAPメールボックス同期に問題があります。IMAP同期
まず、IMAPサーバーから新しいメールをフェッチすることはできますが、削除されたメッセージをメールボックスから見つける方法はわかりません。
サーバーからすべてのメッセージを取得し、ローカルデータと比較して同期する必要がありますか?
IMAPクライアントを実装していますが、IMAPメールボックス同期に問題があります。IMAP同期
まず、IMAPサーバーから新しいメールをフェッチすることはできますが、削除されたメッセージをメールボックスから見つける方法はわかりません。
サーバーからすべてのメッセージを取得し、ローカルデータと比較して同期する必要がありますか?
通常のアプローチは、フォルダごとに次の2つのコマンドを実行することである。
. EXAMINE "<foldername>"
. FETCH 1:* (UID FLAGS)
最初のコマンドは、フォルダは、このフォルダのUIDVALIDITY返し選択します。この値が以前に返されたUIDVALIDITYと一致する場合は、UIDに依存することができます。 2番目のコマンドは、選択したフォルダ内の各メールについて、UIDとすべてFLAGSを返します。
\Seen
)と削除されたメール(\Deleted
)に関する情報が含まれています。このアプローチはほとんどのクライアントで使用されており、ほとんどのIMAPサーバーはこれらのサーバーに最適化されています。制限要因は、通常、クライアントとサーバー間の使用可能な帯域幅です。
次のような状況は少し複雑さ:UIDVALIDITYが一致しない場合は何をすべき
アプリのたぶん遅すぎるが、あなたは、このRFCに完全なIMAP同期戦略を見つけることができます:http://tools.ietf.org/html/rfc4549!
UIDPLUS拡張機能は、移動/コピーされた電子メールに役立ちます。 削除されたメッセージを検出するもう1つの方法は、UID SEARCH: 'EXAMINE"フォルダ "' 'UID SEARCH 1:*'を使用することです。これにより、現在メールボックスにあるすべてのUIDの一覧が表示され、ローカルキャッシュと比較することができます。 – Max