Как я могу получить последние электронные письма из всех папок с помощью 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)

Поэтому я хочу посмотреть только на папки "Сообщения", но на все они. Это возможно (без использования account.root.get_folders()) и зацикливание на результатах (что заняло около 5 минут)

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 скажет вам, какие типы элементов может содержать данная папка.

Другие вопросы по тегам