メッセージに UniqueId (UID) を使用します。これが特に作成された理由です。
最後に要求された UID を追跡し、すべての新しいメッセージを要求するには、メッセージ セット "[UID]:*" を使用します。[UID] は実際の UID 値です。
たとえば、最後にフェッチされたメッセージの一意の ID が「123456」だったとします。あなたはフェッチするでしょう
123456:*
次に、最初に返されたメッセージを破棄します。
UID は、セッション全体で安定しており、変更されることはなく、常に値が増加することが「想定」されています。これを確認するためのキャッチは、フォルダーを選択するときに UIDValidity を確認することです。UIDValidity 番号が変更されていない場合、UID はセッション間で有効である必要があります。
RFC の関連部分は次のとおりです。
2.3.1.1. 一意識別子 (UID) メッセージ属性
各メッセージに割り当てられた 32 ビットの値。一意の識別子の有効値 (以下を参照) と共に使用すると、64 ビットの値が形成され、メールボックス内の他のメッセージまたは同じ名前の後続のメールボックスを永久に参照してはなりません。一意の識別子は、メールボックス内で厳密に昇順で割り当てられます。各メッセージがメールボックスに追加されると、以前に追加されたメッセージよりも高い UID が割り当てられます。メッセージ シーケンス番号とは異なり、一意の識別子は必ずしも連続しているわけではありません。
メッセージの一意の識別子は、セッション中に変更してはならず、セッション間で変更するべきではありません。セッション間の一意の識別子の変更は、以下で説明する UIDVALIDITY メカニズムを使用して検出可能でなければなりません。クライアントがサーバーとの以前のセッションからの状態を再同期するには、永続的な一意の識別子が必要です (たとえば、切断されたクライアントまたはオフライン アクセス クライアント)。これについては、[IMAP-DISC] でさらに説明します。
注: 次の一意の識別子の値は、クライアントが前回この値をチェックしてからメッセージがメールボックスに配信されたかどうかを判断する手段を提供することを目的としています。
詳細情報のリンクは次のとおりです。
http://www.faqs.org/rfcs/rfc3501.html
私がすることは、ダウンロードされたメッセージの InternalDate も追跡することです。これにより、UID 同期が失われた場合でも、少なくともメッセージを繰り返し処理し、メッセージの InternalDate に基づいて最後にダウンロードしたメッセージを見つけることができます。