Как использовать exchangelib для получения почты для не входящих папок
Я хочу получать почту для папок, не входящих в почтовый ящик - как я могу это сделать?
Я могу получить электронные письма папки входящих сообщений так:
from exchangelib import DELEGATE, Account, Credentials, EWSDateTime
creds = Credentials(
username='xxx.test.com\test',
password='123456')
account = Account(
primary_smtp_address='test@test.com',
credentials=creds,
autodiscover=True,
access_type=DELEGATE)
# Print first 100 inbox messages in reverse order
for item in account.inbox.all().order_by('-datetime_received')[:100]:
# print(item.subject, item.body, item.attachments)
print(item.subject)
Предоставление:
hahaha
heiheihei
pupupu
bibibib
........
И когда я получу свои папки:
from exchangelib.folders import Messages
for f in account.folders[Messages]:
print f
Messages (aaa)
Messages (bbb)
Messages (ccc)
Как я могу получить электронные письма из ccc
папка с использованием Python?
1 ответ
Решение
Посмотрите на опции навигации по папкам в последних версиях exchangelib
: https://github.com/ecederstrand/exchangelib
Вы можете распечатать всю структуру папок следующим образом:
print(account.root.tree())
а затем перейдите к определенной папке, используя тот же синтаксис, что и pathlib
:
some_other_folder = account.inbox / 'some_inbox_subfolder'
# Or:
some_other_folder = account.root / 'some' / 'other' / 'path'
for item in some_other_folder.all().order_by('-datetime_received')[:100]:
print(item.subject)
Вы можете сделать только для входящих папок:
for subfolder in account.inbox.children:
for emailz in subfolder.all().only('subject','attachments','datetime_sent').order_by('-datetime_received'):
#do your thing
Или все корневые дочерние папки:
for subfolder in account.root.children:
for emailz in subfolder.all().only('subject','attachments','datetime_sent').order_by('-datetime_received'):
#do your thing