c# - 在 Outlook 中执行搜索查询

标签 c# search outlook

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

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

最佳答案

如果您想访问 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
  • ol文件夹发件箱
  • olFolderJunk
  • ...

在 MSDN 上查看每个可能的值:

OlDefaultFolders Enumeration

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

关于c# - 在 Outlook 中执行搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11160610/

相关文章:

c# - ldloc 还是 ldloca?

python - 最后一场比赛结束的 anchor

java - 卢塞恩 : Delete by ID not working

c# - 出现此错误 : "The remote server returned an error: (422) Unprocessable Entity." when doing post from C# to RoR

email - 如何将参数传递给 .msg 文件?

vba - 以五秒为间隔发送电子邮件

c# - 将键/值匿名对象作为参数传递

c# - 我需要在动态 EF Filter 生成中调用 EntityFunctions 方法。如何?

c# - Windows 10 开发 : How to refresh ListView whenever there is a change in the items inside ListView?

php - 使用ElasticSearch匹配多个文档