是否可以使用python对Outlook收件箱中来自特定发件人的所有电子邮件进行排序?

2024-04-28 19:50:58 发布

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

我需要对我的企业outlook帐户进行排序,并希望对通过某个地址发送的所有电子邮件进行排序,并找到该电子邮件的所有回复。我的理解是,我可以使用win32com.client模块访问outlook,并且能够阅读文件夹中所有“未读”的电子邮件。但是,我想更改过滤器,根据特定发件人阅读电子邮件。我似乎找不到一个可以在messages对象上调用的方法的全面列表。你能指定一个发送者吗

以下是我目前的代码:

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox = outlook.GetDefaultFolder(6) # "6" refers to the index of a folder - in this case,
                                    # the inbox. You can change that number to reference
                                    # any other folder
messages = inbox.Items
messages.Sort("[ReceivedTime]",True)

sender = 'xxxxx@xxxx.com'
for message in messages:
    if sender in message:
        print (message.body)

Tags: thetoinclientmessage排序电子邮件帐户
1条回答
网友
1楼 · 发布于 2024-04-28 19:50:58

迭代文件夹中的所有项目并不是一个好主意。相反,您需要在Outlook中使用Items类的Find/FindNextRestrict方法。请在以下文章中阅读更多关于它们的信息:

例如,可以使用以下搜索条件:

outItems = Items.Restrict("[SenderEmailAddress] = " & "'" & address & "'")

此外,您可能会发现Application类的AdvancedSearch方法很有用。在Outlook中使用“AdvancedSearch”方法的主要好处是:

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

相关问题 更多 >