您好我想知道是否可以从我的 WinForms 应用程序向 Outlook 2010 发送搜索查询。也就是说,不是像我一直在搜索和发现的那样搜索 .PST 文件,而是尝试在 Outlook 中显示结果列表,就好像我自己在搜索框中键入一样。
如果可能,任何示例代码都会有所帮助。此外,是否可以直接在所有邮件项目中执行搜索,而不是通常在您进行搜索时梳理当前文件夹。谢谢。
如果您想访问 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(...) 方法的参数。您可以指定收件箱以外的其他文件夹。
查看 MSDN 上的每个可能值:
Stefan Cruysbergs 创建了一个OutlookProvider 组件,该组件充当 Outlook 应用程序对象的包装器。您可以使用 LINQ 查询此提供程序并检索联系人、邮件等数据。只需下载他的代码并查看。这应该足以让你开始。