このトピックでは、POP3 アカウントのメッセージダウンロード履歴を表す POP3 BLOB の構造について説明します。これにより、そのアカウントでダウンロードまたは削除されたメッセージが識別されます。
メッセージのダウンロード履歴を解析する理由
Outlook 用の Post Office Protocol (POP) プロバイダーを使用すると、ユーザーはローカル デバイスで新しい電子メール メッセージを取得およびダウンロードし、その後、メール サーバー上でこれらの電子メール メッセージを残したり削除したりできます。 メール クライアントは、ダウンロードする新しいメッセージを確認するときに、その受信トレイの新しいメッセージのみを識別してダウンロードできる必要があります。 メール クライアントは、まず UIDL (一意の ID リスト) コマンドを使用して、その受信トレイに一意の識別子 (UID) に配信された各メッセージのマップを取得することでこれを行います。 クライアントは、そのクライアントの受信トレイに対してダウンロードまたは削除されたメッセージのメッセージダウンロード履歴も取得します。 メッセージ UID マップとダウンロード履歴を使用して、クライアントは履歴に存在しないメッセージを新しいメッセージとして識別し、ダウンロードする必要があります。
受信トレイのメッセージダウンロード履歴を取得するには:
POP3 アカウントのメッセージ ダウンロード履歴の検索に関するページの手順に従って、POP3 アカウントのメッセージ履歴を表すバイナリ ラージ オブジェクト (BLOB) を含む PidTagAttachDataBinary プロパティを見つけます。
このトピックでは、BLOB の構造について説明し、POP3 アカウントの受信トレイに対してダウンロードまたは削除されたメッセージを識別する BLOB の例を示します。
POP BLOB 構造体
表 1 で説明されているように、POP BLOB 構造体は、 Version と Count の 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 構造の例
表 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 のリソース タグ 1 を解釈するには、UID 0BC535DB-EA63-11E1-A75C-00215AD7BB74
を含むメッセージが 2012 年 9 月 6 日の 13:11:38 に正常に取得されました。
同様に、その BLOB の残りの 22 個のリソース タグを解析できます。