MAPI プロファイル

適用対象: Outlook 2013 | Outlook 2016

プロファイルには、コンピューターにインストールされているサービス プロバイダーとメッセージ サービスに関する情報が格納されます。 セッションごとに、ログオン時にクライアントが、使用するプロバイダーとサービスを記述する 1 つのプロファイルを選択します。 クライアントはプロファイルのコレクションから選択でき、必要に応じて既定値としてプロファイルを確立できます。 既定のプロファイルは、クライアントがセッションを開始したときに自動的に選択され、プロファイルが明示的に指定されていないプロファイルです。

また、これらのトピックでは、バイナリ ストリームに格納されているニックネーム キャッシュについて説明します。

プロファイル セクション

プロファイルは、クライアントとサービス プロバイダーがユーザーにプロファイル プロパティを表示したり、構成を変更したりするためにアクセスするセクションに分かれています。 プロファイル セクションは、 IProfSect インターフェイスを実装する MAPI オブジェクトです。 これは、IMAPIProp から派生し、追加のメソッドを持たないインターフェイスです。 詳細については、「 IProfSect : IMAPIProp」を参照してください。 その唯一の目的は、プロファイル セクションのプロパティを操作することです。 特定のプロファイル セクションへの IProfSect ポインターを取得するには、クライアントとサービス プロバイダーは次のメソッドを呼び出します。

プロパティ
クライアントは次を呼び出すことができます。
IMAPISession::OpenProfileSection
サービス プロバイダーは、次を呼び出すことができます。
IMAPISupport::OpenProfileSection
クライアントまたはプロバイダーは、次のいずれかを呼び出すことができます。
IProviderAdmin::OpenProfileSection

プロファイルは、MAPISVC と同様に階層的に編成されます。INF ファイル。 階層の上部には、プロファイルに関連する情報を含むプロファイル セクションがあります。 中間レベルには、特定のメッセージ サービスに関する情報を含むセクションが含まれており、下位レベルには、メッセージ サービス内のいずれかのサービス プロバイダーに関する情報を含むセクションが含まれています。

すべてのプロファイルには、プロファイルの 1 つ以上のセクションに格納されているいくつかの必須プロパティがあります。 たとえば、すべてのプロファイルには 、PR_PROFILE_NAME (PidTagProfileName) プロパティと PR_SEARCH_KEY (PidTagSearchKey) プロパティがあります。 プロファイルの検索キーは、MAPIGUID で定義されている値に設定されます。H はMUID_PROFILE_INSTANCEであり、すべてのプロファイル間で常に一意であることが保証されます。 2 つのプロファイルは同じ名前を持つことができますが、同じ検索キーを持つことはできません。 検索キーは、特定の型のデータではなくバイナリ データとして扱う必要があります。

メッセージ ストア プロバイダーは、プロファイルとメッセージ ストア プロバイダーのプロファイル セクションにメッセージ ストアの PR_DISPLAY_NAME (PidTagDisplayName) プロパティを含め、これらのエントリを同期し続ける必要があります。 メッセージ ストアが作成されると、プロバイダーは、これらのプロファイル セクションに格納されている値に基づいて PR_DISPLAY_NAME を設定します。

プロファイル セクションと IMAPIProp から継承する他のオブジェクトには、次の 2 つの大きな違いがあります。

  • プロファイル セクションでは、トランザクションはサポートされていません。

  • プロファイル セクションは名前付きプロパティをサポートしていません。 IMAPIProp::GetIDsFromNames および IMAPIProp::GetNamesFromIDs 実装からMAPI_E_NO_SUPPORTを 返します。 詳細については、「 IMAPIProp::GetIDsFromNames 」および「 IMAPIProp::GetNamesFromIDs」を参照してください。

プロファイル セクションではトランザクションがサポートされていないため、 IMAPIProp::CopyPropsCopyTo、または SetProps の呼び出しで行われた変更は直ちに有効になります。 詳細については、「 IMAPIProp::CopyProps」を参照してください。 クライアントとサービス プロバイダーは、プロファイル セクションの IMAPIProp::SaveChanges メソッドを呼び出すことができますが、成功しますが、プロファイル セクション データには影響しません。 詳細については、「 IMAPIProp::SaveChanges」を参照してください。 変更をすぐに行うと、クライアントがプロファイル プロパティをユーザーに表示するために使用するプロパティ シートをサービス プロバイダーが実装する方法に影響する可能性があります。 ユーザーが変更を延期または元に戻すことができるようにするサービス プロバイダーは、実際のセクションではなく、プロファイル セクションのコピーを含むプロパティ シートを実装する必要があります。 コピーを使用すると、ユーザーは変更を加え、後でそれらの変更を取り消し、元のプロファイル セクションはそのままにできます。

プロファイルに情報が表示される順序は、MAPI がリソースを構成し、セッションで割り当てを行う方法に影響します。 次の割り当ては、プロファイルの順序の影響を受けます。

  • 既定のメッセージ ストア

  • 個人用アドレス帳

  • 既定のメッセージ ストア検索パス

  • 既定のアドレス帳検索パス

  • トランスポート プロバイダーの注文

MAPI は、既定のメッセージ ストアを、PR_RESOURCE_FLAGS (PidTagResourceFlags) プロパティに設定されたSTATUS_DEFAULT_STORE フラグを持つプロファイル内の最初のメッセージ ストアに設定します。これは、既定のストアであることを示します。 クライアントは、 IMAPISession::SetDefaultStore を呼び出すことによって、この設定をオーバーライドできます。 詳細については、「 IMAPISession::SetDefaultStore」を参照してください。

MAPI では、送信メッセージと受信メッセージを処理するためのトランスポート注文が作成されます。 特定の種類のメッセージに対して複数のトランスポート プロバイダーが登録されている場合、MAPI はこの順序を使用して、メッセージを処理するプロバイダーを決定します。 MAPI は、トランスポート プロバイダーがプロファイルに追加された順序にトランスポート順序を 1 つの例外を設定します。つまり、 PR_RESOURCE_FLAGS プロパティのSTATUS_XP_PREFER_LAST フラグを設定するトランスポートは、順序の最後に配置されます。 クライアントは、 IMsgServiceAdmin::MsgServiceTransportOrder を呼び出すことによってトランスポート順序を設定できます。 詳細については、「 IMsgServiceAdmin::MsgServiceTransportOrder」を参照してください。

サービス プロバイダーとメッセージ サービスの注文に関するこれらのガイドラインが競合する場合があります。 競合がある場合は、コードで競合を解決する必要があります。 Mail コントロール パネル プログラムを使用して、作成したプロファイルを検査して、プロバイダーが期待どおりに構成されているかどうかを判断できます。