テーブルの One-Off

適用対象: Outlook 2013 | Outlook 2016

1 回限りのテーブルには、アドレス帳プロバイダーが新しい受信者を作成するためにサポートするテンプレートに関する情報が含まれています。 1 回限りのテーブルは、アドレス帳プロバイダー、個々のアドレス帳コンテナー、MAPI によって実装され、永続的または一時的なテーブルにすることができます。

注:

1 回限りのテーブルのテンプレートとテンプレート識別子を混同しないでください。目的は似ていますが、コードコンストラクトは似ています。 テンプレートは特定の種類の受信者を作成するために使用され、テンプレート識別子は、ホスト プロバイダーに属する 1 つの受信者のデータをコードにバインドして、外部プロバイダーに属する別の受信者をサポートするために使用されます。

クライアントは新しい受信者を作成します。

  • 送信メッセージの受信者リストに追加します。

  • アドレス帳のいずれかのコンテナーに追加します。

どちらのシナリオでも、アドレス帳プロバイダーは 1 回限りのテーブルを返すように求められます。 アドレス帳プロバイダーは、両方の状況で使用する単一の 1 回限りのテーブルまたは状況ごとに一意の 1 回限りのテーブルを実装できます。

受信者が送信メッセージに含まれる場合、MAPI はアドレス帳プロバイダーの IABLogon::GetOneOffTable メソッドを呼び出して、その 1 回限りのテーブルを取得します。 1 回限りのテーブルには、ユーザーが有効なアドレスを持つ受信者を作成する結果の情報を入力できるようにするテンプレートが含まれています。 MAPI は、ユーザーに変更を反映できるように開いたまま、このテーブルの通知を登録します。 MAPI は、そのサブシステムまたはアドレス帳の状態オブジェクトの IMAPIStatus::ValidateState メソッドが呼び出された場合にのみ、テーブルを解放します。

受信者がコンテナーに追加されると、MAPI は別の呼び出しを行い、コンテナーの IMAPIProp::OpenProperty メソッドを呼び出して 、そのPR_CREATE_TEMPLATES (PidTagCreateTemplates) プロパティを取得します。 この 1 回限りのテーブルに含まれるテンプレートのセットは、コンテナーに追加できる受信者の種類を表します。 たとえば、メール サーバーでは、多くの場合、各コンテナーが対応するゲートウェイに固有のアドレスのみを保持するように、インストールされているすべてのゲートウェイに対して 1 つのコンテナーが公開されます。

MAPI には、独自のテンプレートと、セッション内の各アドレス帳プロバイダーからのテンプレートを含む 1 回限りのテーブルが用意されています。 MAPI には、ユーザーがその形式を認識していると仮定して、任意のアドレスの種類の新しい受信者を作成するために使用できる汎用テンプレートが用意されています。 アドレス帳プロバイダーは、 IMAPISupport::GetOneOffTable を呼び出すことによって、この 1 回限りのテーブルを使用します。 MAPI 1 回限りのテーブルに含まれる各テンプレートは、有効な受信者アドレスを持つ受信者を作成します。

アドレス帳プロバイダーは、通常、サポートするアドレスの種類ごとに 1 つのテンプレートを提供します。 ただし、テンプレートのサポートは必要ありません。 新しいアドレスの作成を許可しないアドレス帳プロバイダーは、MAPI 呼び出しで 1 回限りのテーブルを要求するときにMAPI_E_NO_SUPPORTを返すことができます。 新しいアドレスの作成を許可するが、テンプレートを指定しないアドレス帳プロバイダーは 、IMAPISupport::GetOneOffTable を呼び出して、MAPI の 1 回限りの表に記載されているテンプレートを使用できます。

次のプロパティは、1 回限りのテーブルで必要な列セットを構成します。

PR_ADDRTYPE は、テンプレートで作成された新しい受信者に関連付けることができるアドレスの種類を示します。

PR_DISPLAY_NAMEPR_DISPLAY_TYPE データを新しい受信者に関連付けます。 PR_DISPLAY_NAME には、新しい受信者を識別する文字列が含まれており 、PR_DISPLAY_TYPE には、行と共に表示されるアイコンの種類を識別する定数が含まれています。 メッセージング ユーザーのテンプレートには、 PR_DISPLAY_TYPE 列が DT_MAILUSER に設定されています。配布リストのテンプレートには、 PR_DISPLAY_TYPE 列が DT_DISTLIST に設定されています。

PR_ENTRYID は、新しい受信者の作成に使用するテンプレートのエントリ識別子です。 このエントリ識別子は、今後 の IAddrBook::NewEntryIAddrBook::OpenEntry、および IABContainer::CreateEntry 呼び出しに渡すことができます。 コンテナーは、既定のメッセージング ユーザー テンプレートの行の PR_ENTRYID 列を PR_DEF_CREATE_MAILUSER (PidTagDefCreateMailuser) に設定し、既定の配布リスト テンプレートの行の PR_ENTRYID 列を PR_DEF_CREATE_DL (PidTagDefCreateDl) に設定します。

PR_DEPTH は、テンプレートのインデントのレベルを示すことによって、1 回限りのテーブル内のエントリの階層表示をサポートするために使用されます。 1 回限りのテーブルはフラット リストまたは階層表示として表示できますが、後者の方が適しており、アドレス帳プロバイダーは各行 のPR_DEPTH 列を適切に設定してサポートする必要があります。 PR_DEPTH は 0 から始まります。 PR_DEPTH 列の値が 0 の行はインデントされません。 PR_DEPTHの値が大きいほど、行がインデントされます。 たとえば、 PR_DEPTH が 1 に設定されている行は 1 つのタブにインデントされ、 PR_DEPTH が 3 に設定されている行は 3 つのタブにインデントされます。

PR_SELECTABLE は、テーブル内の行が、新しい受信者を作成するために選択して使用できるテンプレートを表しているかどうかを示すために使用されます。 1 回限りのテーブルのほとんどの行はテンプレートを表しますが、プロバイダーにはテンプレート以外の行を含めることができます。 たとえば、プロバイダーは、ディスプレイに表示されるが受信者の作成には使用されないカテゴリ行など、テンプレートの種類別に 1 回限りのテーブルを整理したい場合があります。

関連項目

MAPI テーブル