2

目前,我使用

latest_mails = account.inbox.filter(datetime_received__gt=emails_since)

但它似乎错过了子文件夹中收到的电子邮件。

打印所有文件夹

for f in account.root.get_folders():
    print(f)

给出类似的东西

Calendar (Kalender)
Contacts (Kontakte)
Contacts (Vorgeschlagene Kontakte)
Folder (AllItems)
Folder (Calendar Logging)
Folder (Common Views)
Folder (Conversation Action Settings)
Folder (Deferred Action)
Folder (Deletions)
Folder (Erinnerungen)
Folder (ExchangeSyncData)
Folder (Finder)
Folder (Infected Items)
Folder (Journal)
Folder (Location)
Folder (MailboxAssociations)
Folder (Notizen)
Folder (Recipient Cache)
Folder (Recoverable Items)
Folder (Schedule)
Folder (Shortcuts)
Folder (Spooler Queue)
Folder (System)
Folder (Versions)
Folder (Views)
Folder (WorkingSet)
Messages (Postausgang)
Messages (Posteingang)
Messages (foo)
Messages (bar)
Messages (something is)
Messages (here)
Messages (Gelöschte Elemente)
Messages (Gesendete Elemente)
Messages (Junk-E-Mail)
Messages (Meine Kontakte)
Messages (MyContactsExtended)
Messages (Nachverfolgte E-Mail-Verarbeitung)
Messages (Zugang)
Tasks (Aufgaben)
Tasks (Aufgabensuche)

所以我只想查看“消息”文件夹,但全部查看。这可能吗(不使用account.root.get_folders())并循环遍历结果(大约需要 5 分钟)

4

1 回答 1

1

你是对的,.filter()它只适用于你调用它的文件夹,而不是子文件夹。我很确定 EWS 一次只支持搜索一个文件夹。

你应该能够做这样的事情来加快速度:

from exchangelib.folders import Messages

for f in account.folders[Message]:
    for i in f.filter(datetime_received__gt=emails_since):
        print(i)

但是Folder类型文件夹也可以包含Message项目,因此根据您的需要,您可能还必须访问这些项目。

f.supported_item_models将告诉您给定文件夹可以包含哪些项目类型。

于 2017-08-29T11:05:24.890 回答