exchangelib中Autodiscover配置异常问题求助
Exchange Autodiscover失败问题解决
调用common.getExchangeConnection()获取Exchange连接时触发Autodiscover全步骤失败,报错堆栈如下:
account = common.getExchangeConnection() File "/opt/apimanagement/common.py", line 68, in getExchangeConnection account_smc = Account( File "/usr/local/lib/python3.8/dist-packages/exchangelib/account.py", line 118, in __init__ self.ad_response, self.protocol = discover( File "/usr/local/lib/python3.8/dist-packages/exchangelib/autodiscover/discovery.py", line 24, in discover return Autodiscovery( File "/usr/local/lib/python3.8/dist-packages/exchangelib/autodiscover/discovery.py", line 121, in discover ad_response = self._step_1(hostname=domain) File "/usr/local/lib/python3.8/dist-packages/exchangelib/autodiscover/discovery.py", line 425, in _step_1 return self._step_2(hostname=hostname) File "/usr/local/lib/python3.8/dist-packages/exchangelib/autodiscover/discovery.py", line 441, in _step_2 return self._step_3(hostname=hostname) File "/usr/local/lib/python3.8/dist-packages/exchangelib/autodiscover/discovery.py", line 473, in _step_3 return self._step_4(hostname=hostname) File "/usr/local/lib/python3.8/dist-packages/exchangelib/autodiscover/discovery.py", line 500, in _step_4 return self._step_6() File "/usr/local/lib/python3.8/dist-packages/exchangelib/autodiscover/discovery.py", line 551, in _step_6 raise AutoDiscoverFailed( exchangelib.errors.AutoDiscoverFailed: 针对邮箱'TEST1.SUPIT@orange-sonatel.com'的Autodiscover协议所有步骤均执行失败。
排查与解决步骤
验证Autodiscover服务可用性
- 检查域名
orange-sonatel.com的DNS记录,确认存在autodiscover.orange-sonatel.com的A/CNAME记录,指向正确的Exchange Autodiscover服务器 - 从运行代码的服务器发起网络测试,比如用
curl https://autodiscover.orange-sonatel.com/autodiscover/autodiscover.xml,确认能正常建立连接并获取XML响应
- 检查域名
确认邮箱有效性
核实TEST1.SUPIT@orange-sonatel.com是已激活的Exchange邮箱,且代码中使用的账号拥有访问该邮箱的权限绕过Autodiscover直接配置
如果Autodiscover服务无法修复,可修改连接代码,直接指定Exchange服务器参数,关闭Autodiscover:from exchangelib import Account, Credentials, Configuration def getExchangeConnection(): creds = Credentials(username="TEST1.SUPIT@orange-sonatel.com", password="your_password") # 替换为实际的Exchange服务器地址,比如Office 365用outlook.office365.com config = Configuration(server="exchange-server-address", credentials=creds) account = Account( primary_smtp_address="TEST1.SUPIT@orange-sonatel.com", credentials=creds, config=config, autodiscover=False ) return account更新依赖库
执行pip install --upgrade exchangelib更新到最新版本,修复可能存在的Autodiscover兼容性问题
内容的提问来源于stack exchange,提问作者juliio12
相关产品推荐
相关产品推荐

