8

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

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

4

1 回答 1

11

如果您想访问 Outlook 数据(例如邮件),您必须将 COM 引用添加到 Microsoft Outlook XX 对象库。

对于 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(); 

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

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
  • ol文件夹发件箱
  • olFolderJunk
  • ...

查看 MSDN 上的每个可能值:

OlDefaultFolders 枚举

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

于 2012-06-22T18:29:19.320 回答