使用Python搜索Outlook收件箱

2024-05-20 23:28:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我已成功连接到Outlook收件箱并正在使用修改自:Reading e-mails from Outlook with Python through MAPI的代码阅读。我想做的是在我的收件箱里搜索某些邮件主题。我可以通过循环浏览所有电子邮件来实现这一点,但我想知道是否有一种更优雅的(也许使用MAPI)方法来搜索收件箱?我把MailItem methods找遍了,但似乎什么也没找到。在

谢谢


Tags: 方法代码from主题电子邮件with邮件methods
2条回答

您所使用的链接使用Outlook对象模型,而不是MAPI扩展MAPI是完全不同的API,可以从C++或Delphi访问,但不可以从Python访问。在

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

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

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

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

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

相关问题 更多 >