メッセージ ストアの検索

適用対象: Outlook 2013 | Outlook 2016

クライアント アプリケーションは、検索条件に一致するメッセージを検索する 1 つ以上のフォルダーを検索できます。 最も簡単な検索手法では、条件を定義するための制限を適用し、この検索または以前の検索用に明示的に作成された検索結果フォルダーに結果を配置します。 すべてのメッセージ ストアがこの手法をサポートしているわけではありません。

使用しているメッセージ ストアで検索結果フォルダーの使用がサポートされているかどうかを判断するには、 IMAPIProp::GetProps メソッドを呼び出して 、PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask) プロパティを取得します。 STORE_SEARCH_OK フラグが設定されている場合は、検索がサポートされます。 設定されていない場合は、ターゲット フォルダーを手動で検査するなど、別の方法が必要です。

メッセージ ストア内の 1 つ以上のフォルダーを検索するには

  1. 以前の検索の検索結果フォルダーがある場合は、手順 2 に進みます。 それ以外の場合は、検索結果フォルダーを作成します。

    1. メッセージ ストアの IMAPIProp::GetProps メソッドを呼び出し、 PR_FINDER_ENTRYID (PidTagFinderEntryId) を要求することで、検索結果のルート フォルダーのエントリ識別子を取得します。

    2. IMsgStore::OpenEntry を呼び出して、PR_FINDER_ENTRYIDで表されるフォルダーを開きます。

    3. フォルダーの IMAPIFolder::CreateFolder メソッドを呼び出して、FOLDER_SEARCH フラグが設定された検索結果フォルダーを作成します。

  2. 検索条件を保持するための制限を作成します。

  3. 検索するフォルダーを表すエントリ識別子の配列を作成します。 この手順は、検索結果フォルダーが以前に使用されていて、同じフォルダーを検索する場合は不要です。

  4. 検索結果フォルダーの IMAPIContainer::SetSearchCriteria メソッドを呼び出し、 lpContainerList をエントリ識別子配列に、 lpRestriction に制限を指定します。

  5. メッセージ ストアで検索完了通知を登録している場合は、通知が届くのを待ちます。

  6. 検索結果フォルダーの IMAPIContainer::GetContentsTable メソッドを呼び出して、そのコンテンツ テーブルにアクセスして、検索結果を表示します。

  7. コンテンツ テーブルの IMAPITable::QueryRows メソッドを呼び出して、検索条件を満たすメッセージを取得します。