この例では、受信トレイ内のアイテムの Body で、文字列 "office" を検索します。
例
このコード例では、DASL (DAV Searching and Locating) 構文を使用してクエリを指定します。 フィルターを作成するために、まずクイック検索が既定のストアで有効になっているかどうかをチェックし、アイテムの本文で "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 オブジェクト ライブラリ コンポーネントへの参照を追加し、Outlook 変数を指定します。 Imports または using ステートメントは、コード例の関数の前に直接置くことはできません。パブリック Class 宣言の前に追加する必要があります。 次のコード行は、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"]);
}
}