exchangelib KeyError: «контакты» или KeyError: «входящие» или - PullRequest
0 голосов
/ 23 июня 2018

Я хочу выполнить поиск в списке контактов какой-либо учетной записи и получить эти контакты обратно, но ни одна из папок, в которых указано здесь , не работает из-за исключения KeyError. Почему-то я не могу получить доступ ни к одной из папок учетной записи Exchange.

Это разрешение или ...?

Код:

from exchangelib import Credentials, Account, Configuration
from exchangelib.protocol import NoVerifyHTTPAdapter, BaseProtocol

BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter

credentials = Credentials("YYY@XXX.com", 'PASSWORD')


account = Account(
    primary_smtp_address="Account@XXX.com",
    autodiscover=True, 
    credentials=credentials
)

print(account)  # work properly with printing my account
print(account.contacts)  # not work with KeyError Exception

Ошибка:

Warning (from warnings module):
  File "C:\Python\lib\site-packages\urllib3\connectionpool.py", line 857
    InsecureRequestWarning)
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
Traceback (most recent call last):
  File "C:\Python\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'contacts'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\dvp7\Desktop\ex.py", line 20, in <module>
    print(account.contacts)
  File "C:\Python\lib\site-packages\cached_property.py", line 73, in __get__
    return obj_dict.setdefault(name, self.func(obj))
  File "C:\Python\lib\site-packages\exchangelib\account.py", line 169, in contacts
    return self.root.get_default_folder(Contacts)
  File "C:\Python\lib\site-packages\exchangelib\folders.py", line 965, in get_default_folder
    for f in self._folders_map.values():
  File "C:\Python\lib\site-packages\exchangelib\folders.py", line 928, in _folders_map
    for f in FolderCollection(account=self.account, folders=distinguished_folders).get_folders():
  File "C:\Python\lib\site-packages\exchangelib\services.py", line 1053, in call
    shape=shape,
  File "C:\Python\lib\site-packages\exchangelib\services.py", line 88, in _get_elements
    response = self._get_response_xml(payload=payload)
  File "C:\Python\lib\site-packages\exchangelib\services.py", line 189, in _get_response_xml
    raise rme
  File "C:\Python\lib\site-packages\exchangelib\services.py", line 171, in _get_response_xml
    res = self._get_soap_payload(soap_response=soap_response_payload)
  File "C:\Python\lib\site-packages\exchangelib\services.py", line 227, in _get_soap_payload
    cls._raise_soap_errors(fault=fault)  # Will throw SOAPError or custom EWS error
  File "C:\Python\lib\site-packages\exchangelib\services.py", line 261, in _raise_soap_errors
    raise vars(errors)[code](msg)
exchangelib.errors.ErrorInternalServerError: An internal server error occurred. The operation failed.

Версия сборки:

Build=15.0.847.31, API=Exchange2013_SP1, Fullname=Microsoft Exchange Server 2013 SP1

Этот метод работает:

account.root.walk() # output : <exchangelib.folders.FolderCollection object at 0x03ADCA90>

Но когда я добавляю filter к нему выше, произошла ошибка.

KeyError: 'folders'

только root папка работает нормально и в ней ничего нет!

print(account.root.all())  # QuerySet(q=Q(), folders=[Root (root)])

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

Для тех, кто нашел эту проблему, выполнив поиск: exchangelib KeyError: 'inbox', исправление для нас заключалось в обновлении после 1.11.4.Было необходимо после 9:15 утра по тихоокеанскому времени сегодня

0 голосов
/ 03 августа 2018

Для записи, это оказалось неправильно работающей папкой архива. Обходной путь предоставлен в https://github.com/ecederstrand/exchangelib/issues/431#issuecomment-409832287, сказав exchangelib игнорировать эту папку:

from exchangelib.folders import ArchiveInbox
from exchangelib.version import EXCHANGE_2016

# Set to something newer than your current version
ArchiveInbox.supported_from = EXCHANGE_2016
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...