谁能告诉我如何能够从我的收件箱和收件箱的指定文件夹中组装一个包含特定日期之后的邮件项目的对象?我知道如何分别获取每个项目,但我不知道如何组合它们。
这是必要的,因为存在将邮件移动到文件夹的 Outlook 规则,但它只能在 Outlook 打开时运行。通常,我需要的邮件位于文件夹中,但如果规则尚未运行,我也需要从常规收件箱中获取邮件。
这是我到目前为止所拥有的:
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
root =outlook.Folders.Item(1).Folders('Inbox')
msg_fromdate= '09/03/2023'
filter_time = "[ReceivedTime]>="+"'"+msg_fromdate+" 12:00 AM" +"'"
inbox_messages = root.Items.Restrict(f'{filter_time}')
folder_messages = root.Folders('folder_name').Items.Restrict(f'{filter_time})
我需要从这两个对象的消息进行迭代,但如果可能的话,将它们合并到单个可迭代对象中会更容易。
有人有想法吗?
您不能这样做 - Outlook 不是关系数据库,您无法从两个文件夹创建联接。
但是,没有什么可以阻止您创建长度等于两个集合之和的数组,并使用两个集合中的项目填充该数组/列表。
您需要使用
AdvancedSearch
类的 Application
方法,该方法允许从多个文件夹中获取项目。在 Outlook 中使用 AdvancedSearch
方法的主要好处是:
AdvancedSearch
方法会在后台自动运行它。Restrict
和 Find
/FindNext
方法可应用于特定的 Items
集合(请参阅 Outlook 中 Items
类的 Folder
属性)。IsInstantSearchEnabled
类的 Store
属性)。Stop
类的 Search
方法随时停止搜索过程。请阅读我十多年前为技术博客撰写的文章中了解更多相关内容 - 以编程方式在 Outlook 中进行高级搜索:C#、VB.NET。