标题基本概括了所有内容。我能够使用以下方法访问我的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]
然而,它突然停止工作,现在最后一行抛出exchangelib.errors.ErrorAccessDenied
,尽管凭据仍然有效(它们适用于Outlook和Android电子邮件客户端)。
我猜服务器以某种方式检测到了活动,并阻止它认为它是欺诈性的。有人可以建议我需要让Exchange服务器管理员查找并更正吗?如果有帮助的话,它会在intermedia.net上托管。
我非常感谢你的帮助。
[将评论提取到实际答案中]
ErrorAccessDenied
通常由您在请求私有项目的项目或您无权访问的私有字段时由服务器引发。虽然听起来很奇怪,但您发送的文件夹可能包含您无权访问的项目。您可以通过获取小块中的项目来缩小范围,直到您遇到引发ErrorAccessDenied
的内容。如果启用调试日志记录,请求和响应XML将告诉您确切的ID。
您可以通过仅从发送的项目请求非私人字段来解决此问题,例如exchange_account.sent.all().only('subject', 'start', 'end')
。否则,如果你能找到行为不端的项目并被允许删除它,那就去做吧。