在Outlook中执行搜索查询

时间:2012-06-22 16:46:20

标签: c# search outlook

您好我想知道是否可以从我的WinForms应用程序向Outlook 2010发送搜索查询。也就是说,不要搜索.PST文件,因为我一直在搜索并查找,我正在尝试在Outlook中显示结果列表,就像我自己在搜索框中输入一样。

如果可能,任何示例代码都会有所帮助。此外,是否可以直接在所有邮件项目中执行搜索,通常在您进行搜索时,它会梳理当前文件夹。感谢。

1 个答案:

答案 0 :(得分:9)

如果要访问Outlook数据(例如邮件),则必须向Microsoft Outlook X.X对象库添加COM引用。

对于Outlook,您可以使用COM互操作。打开“添加引用”对话框并选择“.NET”选项卡,然后添加对Microsoft.Office.Interop.Outlook程序集的引用。

enter image description here

之后不要忘记将命名空间“Microsoft.Office.Interop.Outlook”添加到您的using子句中。

现在您可以创建Outlook应用程序对象的实例:

Microsoft.Office.Interop.Outlook.Application outlook;
outlook = new Microsoft.Office.Interop.Outlook.Application(); 

让我们在您的收件箱中执行查询:

MAPIFolder folder =
    outlook.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderInbox);
    IEnumerable<MailItem> mail = 
        folder.Items.OfType<MailItem>().Where(m => m.Subject == "Test").Select(m => m);

指定要搜索的文件夹作为GetDefaultFolder(...)方法的参数。您可以指定收件箱以外的其他文件夹。

  • olFolderSentMail
  • olFolderOutbox
  • olFolderJunk
  • ...

查看MSDN上的每个可能值:

OlDefaultFolders Enumeration

Stefan Cruysbergs创建了一个OutlookProvider component,它充当Outlook应用程序对象的包装器。您可以使用LINQ查询此提供程序并检索联系人,邮件等数据。只需download他的代码并检查它。这应该足以让你入门。