Выгрузка писем с почтового сервера ms exchange
Возникла следующая задача: выгрузить все письма, находящиеся во входящих, исходящих, в пользовательских папках, подпапках а так же во вложениях, в которых в теме или теле сообщения встречалось определенное слово (например "лопата"), определенных (нескольких заранее известных) почтовых ящиках. Далее выборку (по каждому пользователю отдельно) необходимо сохранить/экспортировать в файл формата .pst для дальнейшей передачи другому ПО (все действия проходят в корпоративной среде с корпоративным почтовым сервером)
С помощью библиотеки exchangengelib подключился к серверу, авторизовавшись под своими учетными данными (в свой ящик), реализовал механизм поиска писем.
Как сохранить результат в файл .pst? Рыться в скопе заранее известных почтовых ящиков (понятно что нужна у/з с суперправами (какими))? Не совсем, необходимо ли отдельно перебирать папки с почтой вложенных папок. Например, есть папка "входящие", в ней есть письма несколько штук а так же в этой папке есть подпапка "хххх" и в ней так же есть письма.
Почему вопрос втал в реализации данной задачи скриптом - как мне сказали средствами ms exchange можно выгрузить только первые 250 писем из какого-либо ящика.
from exchangelib import DELEGATE, Account, Credentials, Configuration
import keyring
import re
def connect_to_exchange(username, server, mailbox):
pass_ = keyring.get_password("post", "xxxxxxxxx")
creds = Credentials(username=username, password=pass_)
config = Configuration(server=server, credentials=creds)
account = Account(primary_smtp_address=mailbox, autodiscover=False, config=config, access_type=DELEGATE)
return account
if __name__ == '__main__':
a = connect_to_exchange('xxxxxxxxxx','yyyyyyyyyyyyyyyy','[email protected]')
start_folder = a.root/'Корневой уровень хранилища' # отсюда начинаю поиск
for sub_folder in start_folder.children:
for email in sub_folder.all()[:5]:
if re.search("лопата", str(email.text_body)):
print(email.text_body)
`
Надеюсь понятно объяснил. Дальнейшие действия предлагаю с вами обсудить. Непонятно что делать с вложениями в письме, в них также может встретиться искомое слово, а так же тип вложения может быть любым.