2017-06-26 3 views
0

Désolé pour mon anglais ne pas être si bien: Dans un domaine Windows je tente de se connecter à notre exchangeserver (2010/SP3) en utilisant l'exemple donné sur le site pypi:Python/exchangelib - ne peut pas établir une connexion

from exchangelib import DELEGATE, NTLM, Account, Credentials, Configuration 
import os, logging 

logging.basicConfig(level=logging.DEBUG) 

creds = Credentials(
    username='mydomain\\my.name', 
    password='mypassword') 

config = Configuration(server='exchange.xxx.local/EWS/Exchange.asmx', credentials=creds) 

account = Account(
    primary_smtp_address='[email protected]', 
    credentials=creds, 
    autodiscover=False, 
    access_type=DELEGATE) 

for item in account.inbox.all().order_by('-datetime_received')[:30]: 
    print(item.subject, item.body, item.attachments) 

Après avoir démarré le script, je reçois cette sortie dans la console python:

DEBUG:exchangelib.protocol:Waiting for _protocol_cache_lock 
DEBUG:exchangelib.protocol:Protocol __call__ cache miss. Adding key '('https://exchange.xxx.local/EWS/Exchange.asmx', Credentials('mydomain\\my.name', '********'), True)' 
DEBUG:exchangelib.transport:Getting service auth type for https://exchange.xxx.local/EWS/Exchange.asmx 
DEBUG:exchangelib.transport:Requesting b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><s:Header><t:RequestServerVersion Version="Exchange2016" /></s:Header><s:Body><m:ResolveNames ReturnFullContactData="false"><m:UnresolvedEntry>mydomain\\my.name</m:UnresolvedEntry></m:ResolveNames></s:Body></s:Envelope>' from https://exchange.xxx.local/EWS/Exchange.asmx 
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): exchange.xxx.local 
Traceback (most recent call last): 
    File "C:\CWS\Python-venv\p353-01\lib\site-packages\urllib3\connectionpool.py", line 594, in urlopen 
self._prepare_proxy(conn) 
    File "C:\CWS\Python-venv\p353-01\lib\site-packages\urllib3\connectionpool.py", line 810, in _prepare_proxy 
conn.connect() 
    File "C:\CWS\Python-venv\p353-01\lib\site-packages\urllib3\connection.py", line 294, in connect 
self._tunnel() 
    File "C:\seProg\python353\Lib\http\client.py", line 832, in _tunnel 
message.strip())) 
OSError: Tunnel connection failed: 407 Proxy Access Denied  
... (and many more lines with error messages) 

J'ai essayé aussi les autres options du site exchangelib avec autodiscover = True et que creds = donnée (sans config =). Sans succès. J'ai ensuite installé l'EWS-Editor de https://ewseditor.codeplex.com/ afin de voir, si la connexion via EWS peut fonctionner du tout dans l'environnement de mon entreprise. Cela fonctionne bien avec cet outil, il suffit de lui donner mon adresse SMTP.

J'apprécierais beaucoup toute aide. Merci d'avance!

Répondre

0

Vous devez probablement indiquer à exchangelib vos procurations. Vous pouvez le faire via des variables d'environnement: https://github.com/ecederstrand/exchangelib/issues/123#issuecomment-295648189 ou via une classe HTTPAdapter personnalisée: https://github.com/ecederstrand/exchangelib/issues/156#issuecomment-312391095

+0

Merci - J'ai essayé votre première suggestion, mais je n'ai pas travaillé (en second lieu, je ne sais pas comment construire la classe HTTPAdapter) . D'après mes admins Exchange et réseau, il ne s'agit pas d'un problème de proxy, car l'utilisation de proxy n'est pas nécessaire dans le trafic interne (domain-): Exception pour toutes les adresses telles que: * .xxx.local. Notre serveur de bourse est "exchange.xxx.local". J'ai testé cela en utilisant la bibliothèque de requêtes avec un simple 'r = requests.get ('http: //exchange.xxx.local')' et ça a marché! Donc, aucune utilisation de proxy nécessaire - j'apprécierais un autre indice! – Chessyman

+0

Le test 'requests.get ('http: //exchange.xxx.local')' ne touche pas le chemin du code TLS, où l'erreur se produit. Essayez avec 'requests.get ('https: //exchange.xxx.local/EWS/Exchange.asmx')' à la place. Sinon, vous pouvez essayer la section de dépannage à https://github.com/ecederstrand/exchangelib#troubleshooting –