在Outlook中执行搜索查询

ika*_*eat 7 c# search outlook

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

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

Chr*_*ers 9

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

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

在此输入图像描述

之后不要忘记将命名空间"Microsoft.Office.Interop.Outlook"添加到using子句中.

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

Microsoft.Office.Interop.Outlook.Application outlook;
outlook = new Microsoft.Office.Interop.Outlook.Application(); 
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • olFolderSentMail
  • olFolderOutbox
  • olFolderJunk
  • ...

查看MSDN上的每个可能值:

OlDefaultFolders枚举

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