使用Python

时间:2017-06-30 20:53:05

标签: python email search outlook mapi

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

由于

2 个答案:

答案 0 :(得分:1)

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

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

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

详细了解Advanced search in Outlook programmatically: C#, VB.NET文章中的AdvancedSearch方法。注意,Outlook对象模型对于所有编程语言都是通用的,因此无论使用Python还是C#都无关紧要。

答案 1 :(得分:0)

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

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