2

POP3 と IMAP で動作するメール クライアントを作成しています。vmime api を使用して C++ でクライアントをプログラミングしています。私の質問は次のとおりです。メールを同期するための最良の方法は何ですか?

識別子は良い方法だと思いますが、メールを同期するための最良の識別子が何であるかわかりません:

  • IMAP: UID (RFC 3501)
  • POP3: UIDL (RFC 1932)
  • インターネット形式のメッセージ: メッセージ ID (RFC 5322)

message-ID が最も使いやすいですが、同じメッセージ ID が 2 つある可能性はありますか? UID (IMAP) と UIDL (UID) について同じ質問ですか?

手伝って頂けますか?前もって感謝します。

4

2 に答える 2

3

IMAP では、 のタプルは(FolderName, UIDVALIDITY, UID)、仕様により、特定のサーバーに対して永久に一意であることが保証されています。一意性を保証するには、3 つの値すべてが必要であることに注意してください。各フォルダには独自の UID があり、重複する場合があります。削除されて名前が変更されたフォルダーも同じ UID を持つ場合がありますが、異なる UIDVALIDITY を持つ必要があります。

POP3 ではフォルダがないため、通常は UIDL で十分です。

メッセージ ID は通常、送信者によって生成されるため、一意であるとは保証できません。これを複製するのは簡単です: ある IMAP フォルダーから別のフォルダーにメッセージをコピーします。

于 2014-10-09T20:37:24.297 に答える
2

のタプルが他の(FolderName, UIDVALIDITY, UID)メッセージを参照することは決してないと Max が言っているのは正しいですが、残念ながら、特定のメッセージが同じタプルのみを使用して常に参照されるという保証はありません。サーバーは をバンプすることが許可されており、メッセージの移動間で持続する一意の識別子を提供したり、重複したメッセージを識別したりする標準的な方法はありません。UIDVALIDITY

于 2014-10-15T00:47:21.880 に答える