Как без перебора всех папок выполнить поиск писем в папке входящие и всех подпапок? Вариант ниже с чтением отдельно всех папок по очереди не подходит.
my_folder = account.inbox / 'myfolder'
for i in my_folder.all():
print(i.subject)
Вариант ниже с перебором папок не работает:
from exchangelib.folders import Messages
for f in account.folders[Message]:
for i in f.filter(datetime_received__gt=emails_since):
print(i)
При таком подходе пишет:
File "test.py", line 27, in getitem
for f in self.account.folders[Messages]:
AttributeError: 'Account' object has no attribute 'folders'
Думаю дело в древности данного решения.
UPDATE:
Выкрутился с помощью вот такого поиска:
def getitem(self,c): # Вернет количество последних писем равное c из подпапок входящие
self.my_folder = self.account.root / 'Корневой уровень хранилища'
for f in self.my_folder.walk().filter(subject__contains='CallKeeper').order_by('-datetime_received')[:c]:
# for i in f.filter(subject__contains='a'):
print(f.subject, f.datetime_received)
Но так как внутри функция walk() организована так же перебором, то результат поиска выдает первый попавшийся, т.е.: если он находит нужное количество сообщений в папке входящие, он отправляет результат, не просматривая все остальные папки, а мне нужно что бы поиск был самого последнего сообщения с темой содержащей "CallKeeper" в папке входящие и всех ее вложениях. Пробовал через:
FolderCollection(account=self.account, folders=[self.account.inbox, self.account.inbox / 'CallKeeper', self.account.inbox / 'folder2>']).filter(subject__contains='CallKeeper').order_by('-datetime_received')[:c]:
результат такой же.
Может есть идеи у кого?