フォルダー内のアイテムの本文で語句を検索する

この例では、受信トレイ内のアイテムの Body で、文字列 "office" を検索します。

このコード例では、DAV Searching and Locating (DASL) 構文を使用してクエリを指定します。 フィルターを作成するために、このコード例では、まず、既定のストアでクイック検索が有効になっているかどうかを確認しています。これにより、アイテムの本文に含まれる "office" の語句に完全一致する ci_phrasematch キーワードを使用するか、アイテムの本文に出現する "office" と完全に同じ文字列または部分的に同じ文字列に一致する like キーワードを使用するかを判断します。 その後で、この例では、受信トレイの GetTable メソッドにフィルターを適用して、Table オブジェクトで結果を取得します。 さらに、このコード例では、Table で返された各アイテムの件名を表示します。

このコード例では、Body プロパティを指定するために、名前空間の表現として urn:schemas:httpmail:textdescription を使用しています。

ci_phrasematch キーワードの構文は次のとおりです。

<PropertySchemaName> ci_phrasematch <ComparisonString>

like キーワードを使用して先頭一致の検索を行うときの構文は次のとおりです。

<PropertySchemaName> like <Token>%

like キーワードを使用して任意の部分文字列を検索するときの構文は次のとおりです。

<PropertySchemaName> like %<Token>%

Visual Studio を使用してこのコード サンプルをテストする場合、Microsoft.Office.Interop.Outlook 名前空間をインポートする際に、最初に必ず Microsoft Outlook 15.0 Object Library コンポーネントへの参照を追加し、そして Outlook 変数を指定します。Imports または using ステートメントは、コード サンプル中の関数の前に直接置かれず、Public クラス宣言の前に追加する必要があります。次のプログラムは、Visual Basic および C#でインポートおよび割り当てを行う方法を示しています。

Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub DemoSearchBody()
    Dim filter As String
    If (Application.Session.DefaultStore.IsInstantSearchEnabled) Then
        filter = "@SQL=" & Chr(34) _
            & "urn:schemas:httpmail:textdescription" & Chr(34) _
            & " ci_phrasematch 'office'"
    Else
        filter = "@SQL=" & Chr(34) _
            & "urn:schemas:httpmail:textdescription" & Chr(34) _
            & " like '%office%'"
    End If
    Dim table As Outlook.Table = _
        Application.Session.GetDefaultFolder( _
        Outlook.OlDefaultFolders.olFolderInbox).GetTable( _
        filter, Outlook.OlTableContents.olUserItems)
    While Not (table.EndOfTable)
        Dim row As Outlook.Row = table.GetNextRow()
        Debug.WriteLine(row("Subject"))
    End While
End Sub
private void DemoSearchBody()
{
    string filter;
    if (Application.Session.DefaultStore.IsInstantSearchEnabled)
    {
        filter = "@SQL=" + "\""
            + "urn:schemas:httpmail:textdescription" + "\""
            + " ci_phrasematch 'office'";
    }
    else
    {
        filter = "@SQL=" + "\""
            + "urn:schemas:httpmail:textdescription" + "\""
            + " like '%office%'";
    }
    Outlook.Table table = Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderInbox).GetTable(
        filter, Outlook.OlTableContents.olUserItems);
    while (!table.EndOfTable)
    {
        Outlook.Row row = table.GetNextRow();
        Debug.WriteLine(row["Subject"]);
    }
}

関連項目