次の方法で共有


POP3 アカウントのメッセージ ダウンロード履歴の解析

このトピックでは、POP3 アカウントのメッセージダウンロード履歴を表す POP3 BLOB の構造について説明します。これにより、そのアカウントでダウンロードまたは削除されたメッセージが識別されます。

メッセージのダウンロード履歴を解析する理由

Outlook 用の Post Office Protocol (POP) プロバイダーを使用すると、ユーザーはローカル デバイスで新しい電子メール メッセージを取得およびダウンロードし、その後、メール サーバー上でこれらの電子メール メッセージを残したり削除したりできます。 メール クライアントは、ダウンロードする新しいメッセージを確認するときに、その受信トレイの新しいメッセージのみを識別してダウンロードできる必要があります。 メール クライアントは、まず UIDL (一意の ID リスト) コマンドを使用して、その受信トレイに一意の識別子 (UID) に配信された各メッセージのマップを取得することでこれを行います。 クライアントは、そのクライアントの受信トレイに対してダウンロードまたは削除されたメッセージのメッセージダウンロード履歴も取得します。 メッセージ UID マップとダウンロード履歴を使用して、クライアントは履歴に存在しないメッセージを新しいメッセージとして識別し、ダウンロードする必要があります。

受信トレイのメッセージダウンロード履歴を取得するには:

POP BLOB 構造体

表 1 で説明されているように、POP BLOB 構造体は、 VersionCount の 2 つのフィールドで始まり、その後に Count 個のリソース タグが続き、それぞれが null で終了します。

表 1. POP3 アカウントのメッセージダウンロード履歴を表す BLOB の構造

BLOB のフィールド サイズ 説明
バージョン
2 バイト
3 (PBLOB_VERSION_NUM) にする必要があります。
Count
2 バイト
この BLOB 内のリソース タグの数。
リソース タグ
変数
リソース タグをエンコードする 0 個以上の null で終わる UTF-8 文字列。 null で終わる文字列の数は Count と一致する必要があります。

各リソース タグは、メッセージに適用される操作、操作に関する日付時刻メタデータ、メッセージの UID をエンコードする操作を指定します。 リソース タグ文字列の形式は次のように分解され、表 2 でさらに説明されています。

Ocyyyymmddhhmmssuuu...

表 2. リソース タグの構造

リソース タグのフィールド サイズ 説明
O
1 文字
電子メール メッセージに対して実行された操作。 値は"+"、"-"、または "&" である必要があります。これは、それぞれ取得、削除、または get-and-delete 操作が成功したことを示します。
c
1 文字
操作に関係するメッセージ コンテンツの部分。 値は""、"h"、または "b" である必要があります。これは、それぞれ none、header、または body の内容を示します。
yyyy
4 文字
操作の 4 桁の年。
MM
2 文字
操作の 2 桁の月。
dd
2 文字
操作の 2 桁の日。
hh
2 文字
操作の 2 桁の時間。
mm
2 文字
操作の 2 桁の分。
ss
2 文字
操作の 2 桁の秒。
uuu…
可変長
メッセージのエンコードされた UID。

図 1 は、POP アカウントのメッセージダウンロード履歴を表す BLOB の例を示しています。

図 1. POP3 アカウントのメッセージダウンロード履歴の BLOB 構造の例

POP3 アカウントのメッセージ ダウンロード履歴の BLOB

表 1 および表 2 に記載されている構造に基づいて、この BLOB は 23 件の電子メール メッセージのダウンロード履歴を表します。

各リソース タグで生の UID を解析するには、UID は次のエンコードに従います。UID の文字は主に英数字であり、英数字以外の各文字の前には ASCII 文字 "$" (0x24) が付いています。 したがって、ASCII 文字 $2d は英数字以外の文字 "-" を表します。 図 2 は、最初にリソース タグ 1 の生の UID を ASCII 表現に変換してから、"$" の前にある英数字以外の文字を変換して実際の UID を生成する例を示しています。

0BC535DB-EA63-11E1-A75C-00215AD7BB74

図 2. リソース タグ内の生の UID を実際のメッセージ UID に変換する

BLOB の生の UID から実際のメッセージ UID への変換

この BLOB のリソース タグ 1 を解釈するには、UID 0BC535DB-EA63-11E1-A75C-00215AD7BB74 を含むメッセージが 2012 年 9 月 6 日の 13:11:38 に正常に取得されました。

同様に、その BLOB の残りの 22 個のリソース タグを解析できます。

関連項目