Выгрузка писем с почтового сервера 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)

`

Надеюсь понятно объяснил. Дальнейшие действия предлагаю с вами обсудить. Непонятно что делать с вложениями в письме, в них также может встретиться искомое слово, а так же тип вложения может быть любым.


Ответы (0 шт):