在文件夹中项的附件内搜索完全匹配的某短语
此代码示例在收件箱中项的附件内搜索完全匹配的字符串“office”。
示例
该代码示例使用 DAV 搜索和定位 (DASL) 语法指定查询。 为了构造筛选器,该代码示例先检查默认存储区中是否已启用"即时搜索",以确定是否将 ci_phrasematch 关键字用于在任何附件中对"office"进行精确短语匹配。 然后,该示例将筛选器应用于收件箱的 GetTable 方法,并在 Table 对象中获取结果。 接下来,此代码示例显示 Table 中每个返回项的主题。
此代码示例使用命名空间表示法 https://schemas.microsoft.com/mapi/proptag/0x0EA5001E
指定项的 Attachments 属性。 使用 ci_phrasematch 关键字的语法为:
<PropertySchemaName> ci_phrasematch <ComparisonString>
如果使用 Visual Studio 测试此代码示例,必须先添加对 Microsoft Outlook 15.0 对象库组件的引用,并在导入 Microsoft.Office.Interop.Outlook 命名空间时指定 Outlook 变量。 不得将 Imports 或 using 语句直接添加到此代码示例中的函数前面,这两个语句必须后跟公共类声明。 下面的代码行演示了如何在 Visual Basic 和 C# 中执行导入和分配。
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub DemoSearchAttachments()
Dim filter As String
Const PR_SEARCH_ATTACHMENTS As String = _
"http://schemas.microsoft.com/mapi/proptag/0x0EA5001E"
If (Application.Session.DefaultStore.IsInstantSearchEnabled) Then
filter = "@SQL=" & Chr(34) _
& PR_SEARCH_ATTACHMENTS & Chr(34) _
& " ci_phrasematch 'office'"
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 If
End Sub
private void DemoSearchAttachments()
{
string filter;
const string PR_SEARCH_ATTACHMENTS =
"http://schemas.microsoft.com/mapi/proptag/0x0EA5001E";
if (Application.Session.DefaultStore.IsInstantSearchEnabled)
{
filter = "@SQL=" + "\""
+ PR_SEARCH_ATTACHMENTS + "\""
+ " ci_phrasematch '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"]);
}
}
}