【问题标题】:SEARCH Outlook inbox using Python使用 Python 搜索 Outlook 收件箱
【发布时间】:2017-12-04 21:34:00
【问题描述】:

我使用修改自 Reading e-mails from Outlook with Python through MAPI 的一些代码成功连接并阅读了我的 Outlook 收件箱。我想做的是在我的收件箱中搜索某些电子邮件主题。我可以通过循环浏览所有电子邮件来做到这一点,但想知道是否有更优雅(可能使用 MAPI)的方式来搜索收件箱?我查看了MailItem methods,但似乎找不到任何东西。

谢谢

【问题讨论】:

    标签: python email search outlook mapi


    【解决方案1】:

    您需要使用 Application 类的 AdvancedSearch 方法,该方法允许在多个文件夹中搜索项目。 Items 类的RestrictFind/FindNext 方法只允许搜索单个文件夹中的项目。

    在 Outlook 中使用 AdvancedSearch 方法的主要好处是:

    • 搜索在另一个线程中执行。您无需手动运行另一个线程,因为 AdvancedSearch 方法会在后台自动运行它。
    • 可以在任何位置(即超出某个文件夹的范围)搜索任何项目类型:邮件、约会、日历、便笺等。 RestrictFind/FindNext 方法可以应用于特定的 Items 集合(请参阅 Outlook 中 Folder 类的 Items 属性)。
    • 完全支持 DASL 查询(自定义属性也可用于搜索)。您可以在 MSDN 中的 Filtering 文章中阅读更多相关信息。为了提高搜索性能,如果为商店启用了即时搜索,则可以使用即时搜索关键字(请参阅 Store 类的 IsInstantSearchEnabled 属性)。
    • 您可以随时使用 Search 类的 Stop 方法停止搜索过程。

    Advanced search in Outlook programmatically: C#, VB.NET 文章中阅读有关AdvancedSearch 方法的更多信息。请注意,Outlook 对象模型对所有编程语言都是通用的,因此使用 Python 或 C# 并不重要。

    【讨论】:

      【解决方案2】:

      您发布的链接谈到使用 Outlook 对象模型,而不是 MAPI - 扩展 MAPI 是完全不同的 API,可从 C++ 或 Delphi 访问,但不能从 Python 访问。

      要搜索电子邮件,请使用 Items.Find/FindNextItems.Restrict(其中 Items 集合来自 MAPIFolder.Items 属性) - 有关示例,请参阅 https://msdn.microsoft.com/en-us/library/ms268869.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-15
        • 1970-01-01
        • 1970-01-01
        • 2015-10-02
        • 2012-07-03
        • 2018-09-05
        • 2014-05-20
        • 1970-01-01
        相关资源
        最近更新 更多