如何使用exchangelib从所有文件夹中获取最新的电子邮件?

时间:2017-08-29 09:40:58

标签: exchangelib

目前,我使用

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)

所以我只想查看“Messages”文件夹,但是只关注它们。这是可能的(不使用account.root.get_folders())并循环结果(大约需要5分钟)

1 个答案:

答案 0 :(得分:0)

您是正确的.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会告诉您给定文件夹可以包含哪些项目类型。

相关问题