【问题标题】:Perform search query in Outlook在 Outlook 中执行搜索查询
【发布时间】:2012-06-25 00:18:39
【问题描述】:

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

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

【问题讨论】:

    标签: c# search outlook


    【解决方案1】:

    如果您想访问 Outlook 数据(例如邮件),您必须添加对 Microsoft Outlook X.X 对象库的 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(); 
    

    让我们对您的收件箱进行查询:

    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 他的代码并检查一下。这应该足以让您入门。

    【讨论】:

    • 嗯,这不是我所希望的。我熟悉创建 Outlook 实例,这似乎将查询结果返回给应用程序。相反,我只想让 Outlook 打开,从我的应用程序中提供搜索查询,然后在打开的实例中(或者如果未打开,则启动 Outlook)显示来自提供的查询的搜索结果。
    • 听起来您想进行即时搜索(我知道,我已经晚了 6 年)。您可以打开 Outlook 并自动填充即时搜索字段(但仅限于 255 个字符,哈哈)。看看这个:msdn.microsoft.com/en-us/library/office/ff424478.aspx
    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2021-09-15
    • 2015-06-26
    相关资源
    最近更新 更多