Python не может подключиться к почтовому серверу Exchange ⇐ Python

Программы на Python
Anonymous
Python не может подключиться к почтовому серверу Exchange

Сообщение Anonymous »

Добрый день.
У меня возникла проблема: я пишу сценарий Python для подключения к своему рабочему почтовому ящику в Microsoft Outlook Web (OWA). Версия ОС почтового сервера — «Microsoft Windows NT 6.0.6003 Service Pack 2».
У меня нет прав администратора для доступа к этому почтовому ящику. У меня есть только имя пользователя, пароль и адрес почтового сервера.
Я могу свободно получить доступ к этому почтовому ящику с любого телефона или веб-браузера. Но когда я пытаюсь подключиться к этому почтовому ящику с помощью скрипта Python с помощью ExchangeLib я получаю сообщение об ошибке «Ошибка подключения».
Я пробовал использовать библиотеку «exchangelib».
Ниже приведен фрагмент моего кода.
import exchangelib
from exchangelib import DELEGATE, Account, Credentials, Message, Mailbox, HTMLBody, Configuration
creds = Credentials (username = 'usernam@workdomain.**', password = 'pass')
config = Configuration (credentials = creds, server = 'https://owa.workdomain.**', \
service_endpoint = None, auth_type = 'basic', version = None, retry_policy = None, max_connections = None)
account = Account(primary_smtp_address = 'usernam@workdomain.**',fullname = 'usernam',\
access_type = DELEGATE, autodiscover = False, \
credentials = creds, config = config, locale = None, default_timezone = None)

И я получаю эту ошибку:
raise TransportError(f"No valid version headers found in response ({e!r})")
exchangelib.errors.TransportError:
No valid version headers found in response #(ErrorTimeoutExpired('Reraised from ConnectionError(HTTPSConnectionPool(host='https', port=443):
Max retries exceeded #with url: /owa.*******.**/EWS/Exchange.asmx (Caused by #NameResolutionError
(":
Failed to resolve 'https' ([Errno 11001] getaddrinfo failed)

Я вижу, что в версии заголовка запроса есть ошибка, но не понимаю, как ее #исправить.
Если я используйте аргумент «autodiscover=True», я получаю эту ошибку:
Traceback (most recent call last):
File "C:\Python 3.9.13\lib\site-packages\exchangelib\account.py",
line 179, in init self.ad_response, self.protocol = Autodiscovery(
File "C:\Python 3.9.13\lib\site-packages\exchangelib\autodiscover\discovery.py",
line 124, in discover ad = self._step_1(hostname=domain)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\autodiscover\discovery.py",
line 336, in _step_1 return self._step_2(hostname=hostname)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\autodiscover\discovery.py",
line 352, in _step_2 return self._step_3(hostname=hostname)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\autodiscover\discovery.py",
line 388, in _step_3 return self._step_4(hostname=hostname)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\autodiscover\discovery.py",
line 415, in _step_4 return self._step_6()
File "C:\Python 3.9.13\lib\site-packages\exchangelib\autodiscover\discovery.py",
line 467, in _step_6 raise AutoDiscoverFailed( exchangelib.errors.
AutoDiscoverFailed:
All steps in the autodiscover protocol failed for email myusername@workdomain.xx.
If you think this is an error, consider doing an official test at
https://testconnectivity.microsoft.com

Я пытаюсь получить последние 10 полученных писем. С помощью этого скрипта.
import exchangelib
import pytz
from exchangelib import DELEGATE, IMPERSONATION, Account, Credentials, \
EWSDateTime, EWSTimeZone, Configuration, NTLM, GSSAPI, CalendarItem,\
Message, Mailbox, Attendee, Q, ExtendedProperty, FileAttachment, ItemAttachment, \
HTMLBody, Build, Version, FolderCollection
credentials = Credentials(username='workdomain.xx\\myusername', password ='xxxxxxx')
version = Version(build=Build(8,3,83,0))
config = Configuration(service_endpoint = 'https://owa.workdomain.xx', \
credentials = credentials, version = version, auth_type = NTLM)
account = Account (primary_smtp_address = 'myusername@workdomain.xx', config = config, \
autodiscover = False, access_type = DELEGATE)
inbox = account.inbox.all().order_by('-datetime_received')[:10]
for message in inbox:
print(message.subject)

Но я до сих пор не могу даже войти в свой почтовый ящик.((
Traceback (most recent call last):
File "C:\Python 3.9.13\lib\site-packages\cached_property.py", line 70, in __get__
return obj_dict[name]
KeyError: 'inbox'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Python 3.9.13\lib\site-packages\cached_property.py", line 70, in __get__
return obj_dict[name]
KeyError: 'root'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "E:\xxxxxx.py", line 22, in
inbox = account.inbox.all().order_by('-datetime_received')[:10]
File "C:\Python 3.9.13\lib\site-packages\cached_property.py", line 74, in __get__
return obj_dict.setdefault(name, self.func(obj))
File "C:\Python 3.9.13\lib\site-packages\exchangelib\account.py", line 286, in inbox
return self.root.get_default_folder(Inbox)
File "C:\Python 3.9.13\lib\site-packages\cached_property.py", line 74, in __get__
return obj_dict.setdefault(name, self.func(obj))
File "C:\Python 3.9.13\lib\site-packages\exchangelib\account.py", line 350, in root
return Root.get_distinguished(account=self)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\folders\roots.py", line 145, in get_distinguished
return cls._get_distinguished(
File "C:\Python 3.9.13\lib\site-packages\exchangelib\folders\base.py", line 226, in _get_distinguished
return cls.resolve(account=folder.account, folder=folder)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\folders\base.py", line 530, in resolve
folders = list(FolderCollection(account=account, folders=[folder]).resolve())
File "C:\Python 3.9.13\lib\site-packages\exchangelib\folders\collections.py", line 335, in resolve
yield from self.__class__(account=self.account, folders=resolveable_folders).get_folders(
File "C:\Python 3.9.13\lib\site-packages\exchangelib\folders\collections.py", line 403, in get_folders
yield from GetFolder(account=self.account).call(
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\get_folder.py", line 51, in _elems_to_objs
for folder, elem in zip(self.folders, elems):
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\common.py", line 279, in _chunked_get_elements
yield from self._get_elements(payload=payload_func(chunk, **kwargs))
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\common.py", line 309, in _get_elements
self._handle_backoff(e)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\common.py", line 438, in _handle_backoff
raise e
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\common.py", line 300, in _get_elements
yield from self._response_generator(payload=payload)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\common.py", line 263, in _response_generator
response = self._get_response_xml(payload=payload)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\common.py", line 396, in _get_response_xml
r = self._get_response(payload=payload, api_version=api_version)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\services\common.py", line 347, in _get_response
r, session = post_ratelimited(
File "C:\Python 3.9.13\lib\site-packages\exchangelib\util.py", line 866, in post_ratelimited
protocol.retry_policy.raise_response_errors(r)
File "C:\Python 3.9.13\lib\site-packages\exchangelib\protocol.py", line 704, in raise_response_errors
raise ErrorServerBusy("Caused by closed connection")
exchangelib.errors.ErrorServerBusy: Caused by closed connection


Подробнее здесь: https://stackoverflow.com/questions/790 ... ail-server

Вернуться в «Python»