メッセージ ストアを開く
適用対象: Outlook 2013 | Outlook 2016
プロファイルに応じて、クライアントは一般的なセッション中に 1 つ以上のメッセージ ストアを開く必要があります。 メッセージ ストアを開くということは、 IMsgStore : IMAPIProp 実装へのポインターへのアクセス権を取得することを意味します。 IMsgStore インターフェイスには、通知、フォルダーの割り当て、フォルダーとメッセージへのアクセスのメソッドが用意されています。
クライアントは、ログオン時とプロファイルの変更時にメッセージ ストアを開きます。 クライアントでアクティブなセッション中にユーザーがプロファイルにメッセージ ストアを追加できる場合は、すぐに開くか、次のセッションまで無視できます。 メッセージ ストア テーブルに通知を登録すると、新しいメッセージ ストアの可用性に関するアラートが表示されます。
メッセージ ストアを開くには、そのエントリ識別子を使用できる必要があります。 ほとんどのクライアントは、メッセージ ストア テーブルを介して開くメッセージ ストアのエントリ識別子にアクセスします。 ただし、一部のメッセージ ストアでは、エントリ識別子の形式が文書化されているため、クライアントはメッセージ ストア テーブルをバイパスし、必要なエントリ識別子を構築できます。 このエントリ識別子を IMAPISession::OpenMsgStore に直接渡すことができます。MAPI は、プロバイダーのプロファイル セクションをメッセージ サービスに関連付けることなく自動的に作成します。
メッセージ ストア テーブルからエントリ識別子を取得する
IMAPISession::GetMsgStoresTable を呼び出して、メッセージ ストア テーブルを開きます。
IMAPITable::SetColumns を呼び出して、次の列を含む小さな列セットにテーブルを制限します。
- PR_PROVIDER_DISPLAY または PR_DISPLAY_NAME
- PR_ENTRYID プロパティ
- PR_MDB_PROVIDER
- PR_RESOURCE_FLAGS
開くメッセージ ストアを表す行を除外する制限を構築します。 既定のメッセージ ストアの検索の詳細については、「既定のメッセージ ストア を開く」を参照してください。 名前でメッセージ ストアを検索するには、次のいずれかのプロパティ制限を適用します。
PR_PROVIDER_DISPLAY (PidTagProviderDisplay) を、この種類のメッセージ ストアの一般的な名前と一致させます。 たとえば、PR_PROVIDER_DISPLAYは "個人用フォルダー" に設定される場合があります。
PR_MDB_PROVIDER (PidTagStoreProvider) を、この種類のメッセージ ストアの特定の MAPIUID と一致させます。
PR_DISPLAY_NAME (PidTagDisplayName) を、この特定のメッセージ ストアの名前と一致させます。 たとえば、 PR_DISPLAY_NAME は "Fiscal Year 2010 のマイ メッセージ" に設定される場合があります。
HrQueryAllRows を呼び出して、メッセージ ストア テーブルから適切な行を取得します。 行のエントリ識別子は、pprows パラメーターによって指される行セットの aRow メンバーのプロパティ値配列に含まれます。
FreeProws を呼び出して、pprows が指す行セットを解放します。
IUnknown::Release メソッドを呼び出して、メッセージ ストア テーブルを解放します。
開くメッセージ ストアのカスタム エントリ識別子を作成した場合は、 WrapStoreEntryID 関数を呼び出して標準エントリ識別子に変換します。
メッセージ ストアのエントリ識別子を取得したら、次のいずれかのメソッドを呼び出して開きます。
メッセージ ストアのさまざまな特別なオプションを指定する必要がある場合は、 OpenMsgStore を呼び出します。 OpenMsgStore を使用すると、ダイアログ ボックスの表示を抑制したり、メッセージ ストアを一時的または非メッセージング ストアとして識別したり、アクセス レベルを設定したり、エラーを延期したりできます。 OpenEntry では、アクセス レベルを設定し、エラーを延期することのみを許可します。
MDB_NO_MAIL フラグを設定すると、メッセージ ストアがメッセージの送受信に使用されないことを MAPI に示します。 MAPI は、このメッセージ ストアの存在について MAPI スプーラーに通知しません。 MDB_TEMPORARY フラグは、メッセージ ストアを一時的なものとして指定します。これは、永続的な情報を格納するために使用できないことを意味します。 一時メッセージ ストアはメッセージ ストア テーブルに表示されません。