是否可以使用python对Outlook收件箱中来自特定发件人的所有电子邮件进行排序?
我需要对我的企业outlook帐户进行排序,并希望对通过某个地址发送的所有电子邮件进行排序,并找到该电子邮件的所有回复。我的理解是,我可以使用win32com.client模块访问outlook,并且能够阅读文件夹中所有“未读”的电子邮件。但是,我想更改过滤器,根据特定发件人阅读电子邮件。我似乎找不到一个可以在messages对象上调用的方法的全面列表。你能指定一个发送者吗 以下是我目前的代码:是否可以使用python对Outlook收件箱中来自特定发件人的所有电子邮件进行排序?,python,email,outlook,pywin32,Python,Email,Outlook,Pywin32,我需要对我的企业outlook帐户进行排序,并希望对通过某个地址发送的所有电子邮件进行排序,并找到该电子邮件的所有回复。我的理解是,我可以使用win32com.client模块访问outlook,并且能够阅读文件夹中所有“未读”的电子邮件。但是,我想更改过滤器,根据特定发件人阅读电子邮件。我似乎找不到一个可以在messages对象上调用的方法的全面列表。你能指定一个发送者吗 以下是我目前的代码: import win32com.client outlook = win32com.client.
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)
迭代文件夹中的所有项目并不是一个好主意。相反,您需要使用Outlook中
Items
类的方法。请在以下文章中阅读更多关于它们的信息:
outItems = Items.Restrict("[SenderEmailAddress] = " & "'" & address & "'")
此外,您可能会发现应用程序
类的方法很有用。在Outlook中使用“AdvancedSearch”方法的主要好处是:
- 搜索在另一个线程中执行。您不需要手动运行另一个线程,因为
方法会在后台自动运行它AdvancedSearch
- 可以在任何位置搜索任何项目类型:邮件、约会、日历、备注等,即超出特定文件夹的范围。Restrict和
/Find
方法可应用于特定的FindNext
集合(请参阅Outlook中文件夹类的项目
属性)项目
- 完全支持DASL查询(自定义属性也可用于搜索)。您可以在MSDN中的文章中阅读更多有关这方面的内容。为了提高搜索性能,如果为商店启用了即时搜索,则可以使用即时搜索关键字(请参见商店类的
属性)IsInstantSearchEnabled
- 您可以使用search类的
方法随时停止搜索过程stop