Я уже давно использую библиотеку ExchangeLib в Python для доступа к электронной почте в учетной записи электронной почты. Это работает потрясающе. Сегодня совершенно неожиданно я получаю сообщение об ошибке:
KeyError: 'folders'
During handling of the above exception, another exception occured:
exchangelib.errors.ErrorAccessDenied: Not allowed to access Non IPM folder.
Строка кода, в которой это происходит, находится прямо здесь.
msg_folder= my_account.root / 'Top of Information Store' / 'my_subfolder'
Как я уже говорил, это работает отлично уже больше года. Дважды проверил, что доступ к приложению Microsoft правильный, и это так. Также похоже, что последняя версия обменной библиотеки была выпущена 8 марта 24 года и с тех пор она работает, так что этого не может быть.
Другая странность заключается в том, что отдельный скрипт может получать доступ к сообщениям в папке «Входящие», но ошибка возникает только в этой дочерней папке в папке «Входящие».
Однако я ничего не нашел по этой ошибке. Есть какие нибудь идеи как это починить?
См. этот выпуск на GitHub для постоянного обсуждения: github.com/ecederстранд/exchangelib/issues/1288






Это вызвано недавним изменением в O365. Возможно, мы сможем найти исправление в обменной библиотеке. До тех пор обходным путем является переход к папкам с помощью двойной косой черты:
msg_folder = my_account.root // 'Top of Information Store' // 'my_subfolder'
Это работает за счет того, что сначала не собирается полная иерархия папок и не осуществляется навигация по кешу папок на стороне клиента, а вместо этого запрашивается у сервера конкретная дочерняя папка каждый раз, когда мы достигаем нового // уровня.
ОБНОВЛЕНИЕ: исправление представлено в https://github.com/ecederstrand/exchangelib/issues/1290
Обновление статуса и обходной путь для пользователей Veeam доступны здесь: forums.veeam.com/veeam-backup-for-microsoft-365-f47/…