Java で書かれたメール クライアントを開発しています。Outlook や Thunderbird などと同じ機能を備えています。メール サーバーと直接通信します。さらに、ビジネス ルールでは、すべてのメッセージをデータベースに保存し、メッセージを常に同期する必要があります。これが IMAP にはあまり適していないことはわかっていますが、すべてをデータベースに保持する必要があります。フォルダ A からフォルダ B に移動された IMAP メッセージを追跡する方法について質問があります。? どうすればそれについて知ることができますか? A からメッセージを削除すると、メッセージは A から削除され、B で新しく作成されます。その結果、メッセージの UID 値が変更されます。ヘッダーにある MessageID を信頼できますか? いくつかのメール サーバーを確認したところ、ヘッダーのメッセージ ID が変更されていないことがわかりました。しかし、メールサーバーによってはメッセージIDが空になる可能性があることをどこかで読んだことがあります。
- ヘッダーの MessageID は常に設定されていますか? 空白のままにしておくケースまたはメールサーバーの可能性がありますか?
- ヘッダーの MessageID 値は IMAP フォルダー内で一意ですか?
- メッセージが移動されたとき、またはフォルダの UIDVALIDITY が変更されたときに変更される可能性はありますか?
フェッチ中にカスタム ヘッダーを設定するのはどうですか? 非標準のヘッダー名と値のペアを追加すると、それはメール サーバーに保持されますか? または非標準のメール ヘッダーがメール サーバーによって削除される可能性はありますか? 非標準ヘッダー値を適用するのは悪い考えですか?
IMAPMessage m; m.setHeader("myHeader", "myValue");
stackoverflow でいくつかの提案がありました。messageId とその他のパラメーター (sender、subject など) を含むハッシュを生成すると言われていますが、安全な方法ですか? 一意の MessageID が提供されていないか、MessageID が提供されていない場合、競合が発生する可能性があります。