首页 > 解决方案 > exchangelib 突然抛出 ErrorAccessDenied,但凭据仍然有效

问题描述

标题基本概括了所有内容。我能够使用以下方法访问我的 Exchange 服务器:

credentials = Credentials(
    username='DOMAIN\\username',
    password='PASSWORD')

exchange_account = Account(
    primary_smtp_address='someone@somewhere.com',
    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 上。

我非常感谢您的帮助。

标签: pythonexchangelib

解决方案


[将评论提取为实际答案]

ErrorAccessDenied当您请求您无权访问的项目或私有项目上的私有字段时,通常由服务器引发。虽然听起来很奇怪,但您发送的文件夹可能包含您无权访问的项目。您可以通过以小块获取项目来缩小范围,直到您遇到可以提升的东西ErrorAccessDenied。如果您启用调试日志记录,请求和响应 XML 将告诉您确切的 ID。

您可以通过仅从已发送项目中请求非私有字段来解决此问题,例如exchange_account.sent.all().only('subject', 'start', 'end'). 否则,如果您可以找到行为不端的项目并被允许将其删除,请执行此操作。


推荐阅读