标题基本概括了所有内容。我可以使用以下方法访问我的Exchange服务器:
credentials = Credentials(
username='DOMAIN\\username',
password='PASSWORD')
exchange_account = Account(
primary_smtp_address='[email protected]',
credentials=credentials,
autodiscover=True,
access_type=DELEGATE)
sent_items = exchange_account.sent.all().filter(datetime_received__range=(last_date, now))[:10]
但是,它突然停止工作,并且尽管凭据仍然有效(尽管它们在Outlook和Android电子邮件客户端上都可以工作),但最后一行仍抛出
exchangelib.errors.ErrorAccessDenied
。我猜服务器以某种方式检测到该活动,并认为它是欺诈性的而将其阻止。有人可以建议我需要问一下Exchange服务器管理员来查找并纠正吗?如果有帮助,它将托管在intermedia.net上。
我非常感谢您的帮助。
最佳答案
[将评论提取为实际答案]
当请求一个您无权访问的项目或私有项目上的私有字段时,ErrorAccessDenied
通常由服务器引发。听起来很奇怪,但您发送的文件夹中可能包含您无权访问的项目。您可以通过小块地获取项目来缩小范围,直到遇到引起ErrorAccessDenied
的问题为止。如果启用调试日志记录,则请求和响应XML将告诉您确切的ID。
您可以通过仅请求已发送邮件中的非私有字段来解决此问题,例如exchange_account.sent.all().only('subject', 'start', 'end')
。否则,如果您可以找到行为异常的项目并允许将其删除,则只需执行此操作即可。
关于python - exchangelib突然抛出ErrorAccessDenied,但是凭据仍然有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55200018/