次の方法で共有


MAPI テーブル

適用対象: Outlook 2013 | Outlook 2016

MAPI テーブルは、特定の種類の他の MAPI オブジェクトに属するプロパティのコレクションを表示するために使用される MAPI オブジェクトです。 MAPI テーブルは、各行がオブジェクトを表し、各列がオブジェクトのプロパティを表す行と列の形式で構成されます。 通常、各行に含まれるプロパティの 1 つは 、PR_ENTRYID (PidTagEntryId) プロパティです。これは、オブジェクトを開いて変更するために使用できる識別子です。

行にはプロパティ値が含まれているため、テーブルから行を取得することは、行が表すオブジェクトから一連のプロパティを直接取得するのと似ています。 どちらの操作でも、プロパティ値配列が取得されます。 メインの違いは、長い文字列プロパティとバイナリ プロパティの処理にあります。 テーブルに含めるために、一部のテーブル実装者は、これらのプロパティを 255 バイトに切り捨てます。 オブジェクトから直接取得された場合、完全な値は常に使用できます。

テーブルは、テーブルの種類とその中のオブジェクトに応じて、アドレス帳とメッセージ ストア プロバイダーと MAPI によって実装されます。 メッセージ ストア プロバイダーは、フォルダー内のメッセージに関する情報を含む各フォルダーのフォルダーとコンテンツ テーブルを実装します。 アドレス帳プロバイダーは、アドレス帳コンテナーと、そのorganizationを示す階層テーブルを実装します。 MAPI には、クライアント アプリケーションで使用するテーブル、サービス プロバイダーで使用するテーブル、両方で使用するテーブルが実装されています。 状態テーブルは、MAPI が最終的にテーブルを提供する一意ですが、行は MAPI に加えて、すべての種類のサービス プロバイダーからのコントリビューションで構成されます。

次の図は、MAPI でテーブルを頻繁に使用する方法の 1 つを示しています。フォルダーの内容を表示します。 右側には、一般的なメッセージング クライアント アプリケーションに表示される可能性がある 2 つのメッセージが表示されます。 表示には、送信者、受信者、件名、およびメッセージ テキストの 4 つのメッセージに関する情報が含まれています。 各情報は、メッセージのプロパティに対応します。

左側には、これら 2 つのメッセージを含むコンテンツ テーブルのビューがあります。 フォルダーに 10 個のメッセージがあり、各行に 3 つ以上の列が含まれているため、コンテンツ テーブルには 10 行が含まれる場合があります。この特定のビューは 2 行と 3 列のみに制限されます。

次の表は、テーブル ビューの列セットを構成するプロパティを示しています。

プロパティ 説明
PR_SENDER_NAME (PidTagSenderName)
送信者名
PR_ORIGINAL_DELIVERY_TIME (PidTagOriginalDeliveryTime)
メッセージが送信された日時
PR_SUBJECT (PidTagSubject)
メッセージの件名行

メッセージに表示されるプロパティのセットは、テーブルに表示される列のセットと同じではないことに注意してください。 テーブルの実装者 (この場合はメッセージ ストア プロバイダー) は、既定の順序で列の既定のセットを提供します。 クライアントは、この列セットを変更したり、追加の列を要求したり、既定の列を拒否したりして、特定の方法で順序付けするように求めることができます。 クライアントは行を並べ替え、1 つ以上の列の値に従って並べ替えることもできます。

テーブルを使用してフォルダーの内容を表示

テーブルを使用してフォルダーの内容を表示する

テーブルを操作するには、次の 2 つのインターフェイスがあります。

  • IMAPITable: IUnknown は、クライアントとサービス プロバイダーにテーブルの基になるデータの読み取り専用ビューを提供し、プレゼンテーションのみを表示および変更できるようにします。 複数のユーザーが IMAPITable と同時に同じデータにアクセスできます。 IMAPITable は、MAPI とサービス プロバイダーによって実装されます。

  • ITableData: IUnknown は、クライアントとサービス プロバイダーにテーブルの基になるデータへの読み取り/書き込みアクセスを提供し、永続的な変更を行うことができます。 IMAPITable は MAPI によって実装され、主に CreateTable 関数を呼び出してアクセスするサービス プロバイダーによって使用されます。 ITableData 実装では、テーブルのすべてのデータと関連する制限がメモリ内に保持されるため、非常に大きなテーブルで使用するのは適しません。 複合制限や、分類などの複雑な操作はサポートされていません。

関連項目