Forums

exchangelib (EWS connectivity) not running

Hi, I use exchangelib to ingest (my) emails from MS EWS. the identical code and package versions are on my local dev and on PA. I'm a free user (for now). The code is:

from exchangelib import DELEGATE, IMPERSONATION, Account, Credentials, Configuration, FaultTolerance
import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)

def connect_to_EWS(_USERNAME_, _PASS_, _PRIMARY_SMTP_ADDRESS_):

creds = Credentials(_USERNAME_,_PASS_)

config = Configuration(credentials=creds, server='outlook.office365.com')

print ("** ews creds = ",creds)
print ("** ews config = ",config)

return Account(
primary_smtp_address=_PRIMARY_SMTP_ADDRESS_,
autodiscover=False, 
config = config,
access_type=DELEGATE
)

account = connect_to_EWS("email", "???????", "email")

for item in account.inbox.all().order_by('-datetime_received')[:10]:
    print(item.subject, item.sender, item.datetime_received)

Works perfectly on my local dev server. Here is the trace output from PA console:

Traceback (most recent call last):
  File "exchangelib_patrick.py", line 25, in <module>
    account = connect_to_EWS("email", "???????", "email")
  File "exchangelib_patrick.py", line 22, in connect_to_EWS
    access_type=DELEGATE
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/account.py", line 136, in __init__
    self.version = self.protocol.version
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/protocol.py", line 470, in version
    self.config.version = Version.guess(self, api_version_hint=self._api_version_hint)
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/version.py", line 229, in guess
    list(ResolveNames(protocol=protocol).call(unresolved_entries=[name]))
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/services/resolve_names.py", line 52, in _elems_to_objs
    for elem in elems:
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/services/common.py", line 206, in _chunked_get_elements
    yield from self._get_elements(payload=payload_func(chunk, **kwargs))
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/services/common.py", line 226, in _get_elements
    yield from self._response_generator(payload=payload)
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/services/common.py", line 190, in _response_generator
    response = self._get_response_xml(payload=payload)
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/services/common.py", line 312, in _get_response_xml
    r = self._get_response(payload=payload, api_version=api_version)
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/services/common.py", line 279, in _get_response
    timeout=self.timeout or self.protocol.TIMEOUT,
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/util.py", line 877, in post_ratelimited
    protocol.retry_policy.raise_response_errors(r)  # Always raises an exception
  File "/home/ankwilitas/.virtualenvs/Ankwil_Beta_Env/lib/python3.7/site-packages/exchangelib/protocol.py", line 689, in raise_response_errors
    raise UnauthorizedError('Invalid credentials for %s' % response.url)
exchangelib.errors.UnauthorizedError: Invalid credentials for https://outlook.office365.com/EWS/Exchange.asmx
DEBUG:exchangelib.protocol:Server outlook.office365.com: Closing sessions

Why is this not running? Many thanks, Patrick

Are you using SMTP protocol? If so it won't work for a free account on PythonAnywhere which has only support for whitelisted domains via HTTP.