您需要使用类的Find / FindNext或Restrict方法Items
。例如,要获取带有Hello world
主题行的项目,您可以使用以下代码:
private void FindAllUnreadEmails(Outlook.MAPIFolder folder)
{
string searchCriteria = "[Subject] = `Hello world`";
StringBuilder strBuilder = null;
int counter = default(int);
Outlook._MailItem mail = null;
Outlook.Items folderItems = null;
object resultItem = null;
try
{
if (folder.UnReadItemCount > 0)
{
strBuilder = new StringBuilder();
folderItems = folder.Items;
resultItem = folderItems.Find(searchCriteria);
while (resultItem != null)
{
if (resultItem is Outlook._MailItem)
{
counter++;
mail = resultItem as Outlook._MailItem;
strBuilder.AppendLine("#" + counter.ToString() +
"\tSubject: " + mail.Subject);
}
Marshal.ReleaseComObject(resultItem);
resultItem = folderItems.FindNext();
}
if (strBuilder != null)
Debug.WriteLine(strBuilder.ToString());
}
else
Debug.WriteLine("There is no match in the "
+ folder.Name + " folder.");
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
finally
{
if (folderItems != null) Marshal.ReleaseComObject(folderItems);
}
}
在以下文章中阅读有关这些方法的更多信息:
此外,您可能会发现Application 类的AdvancedSearch方法很有帮助。AdvancedSearch
在 Outlook 中使用该方法的主要好处是:
- 搜索在另一个线程中执行。您不需要手动运行另一个线程,因为 AdvancedSearch 方法会在后台自动运行它。
- 可以在任何位置(即超出某个文件夹的范围)搜索任何项目类型:邮件、约会、日历、便笺等。Restrict 和 Find/FindNext 方法可以应用于特定的 Items 集合(请参阅 Outlook 中 Folder 类的 Items 属性)。
- 完全支持 DASL 查询(自定义属性也可用于搜索)。您可以在 MSDN中的过滤文章中阅读有关此内容的更多信息。为了提高搜索性能,如果为商店启用了即时搜索,则可以使用即时搜索关键字(请参阅 Store 类的 IsInstantSearchEnabled 属性)。
- 您可以使用 Search 类的 Stop 方法随时停止搜索过程。
在 Outlook中的高级搜索中以编程方式阅读有关此方法的更多信息:C#、VB.NET文章。