#python #python-3.x #email #exchangewebservices #exchangelib
#python #python-3.x #Адрес электронной почты #exchangewebservices #exchangelib
Вопрос:
В настоящее время я пытаюсь найти способы подключения к моей рабочей электронной почте через язык, и у python, похоже, есть библиотека, которую я ищу. Я нашел библиотеку exchangelib, но она немного старше, и я не смог найти ничего другого для подключения к серверу Exchange (моя рабочая электронная почта не «@outlook.com «).
Я нашел свое имя пользователя («WORD username»), и я знаю свой адрес электронной почты, пароль и URL-адрес электронной почты Outlook web app («www.company.net «)
from exchangelib import Account, Configuration, Credentials, DELEGATE, Folder
def connect(SERVER, EMAIL, USERNAME, PASSWORD):
"""
Get Exchange account cconnection with server
"""
creds = Credentials(username=USERNAME, password=PASSWORD)
config = Configuration(server=SERVER, credentials=creds)
account = Account(primary_smtp_address=EMAIL, config=config, autodiscover=False, access_type=DELEGATE)
for item in account.inbox.all().order_by('-datetime_received')[:2]:
print(item.subject, item.body, item.attachments)
def main():
print(connect("www.company.net",
"my@email.net", "WORD\username", "password"))
Предполагается, что это просто печатает мои электронные письма, но я не могу подключиться, потому что хост не отвечает
Failed to create cached protocol with key ('https://www.company.net/EWS/Exchange.asmx', Credentials('WORD\username', '********')): HTTPSConnectionPool(host='www.company.net', port=443): Max retries exceeded with url: /EWS/Exchange.asmx (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000169BAF68FD0>: Failed to establish a new connection: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond'))
Я попытался использовать полный URL-адрес для своего электронного письма OWA и вместо этого использовал параметр exchangelib service_endpoint
def connect(SERVER, EMAIL, USERNAME, PASSWORD):
"""
Get Exchange account cconnection with server
"""
creds = Credentials(username=USERNAME, password=PASSWORD)
config = Configuration(service_endpoint=SERVER, credentials=creds)
account = Account(primary_smtp_address=EMAIL, config=config, autodiscover=False, access_type=DELEGATE)
for item in account.inbox.all().order_by('-datetime_received')[:2]:
print(item.subject, item.body, item.attachments)
но не удается получить тип авторизации
Failed to create cached protocol with key ('https://company.net/.../.../', Credentials('WORD\username', '********')): Failed to get auth type from service
Я чего-то не понимаю? Может ли это быть из-за функции безопасности на стороне моей компании? Я не уверен, как это сделать правильно.
Ответ №1:
exchangelib использует EWS для подключения к серверу Exchange. OWA — это просто веб-клиент для Exchange. Вы не можете подключиться к нему программно. Тем не менее, вполне возможно, что на вашем сервере есть конечная точка EWS, к которой вы можете подключиться.
Вам необходимо либо включить автообнаружение, чтобы автоматически находить конечную точку EWS, либо попросить администраторов сервера Exchange указать правильную конечную точку для EWS.