exchangelib突然抛出ErrorAccessDenied,但是凭据仍然有效

时间:2019-03-16 18:14:45

标签: python exchangelib

标题几乎说明了一切。我可以使用以下方法访问我的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] 

但是,尽管凭据仍然有效(它们在Outlook和Android电子邮件客户端上都可以使用),但是它突然停止工作,并且最后一行抛出exchangelib.errors.ErrorAccessDenied

我想服务器以某种方式检测到该活动,并认为它是欺诈性的而将其阻止。有人可以建议我需要让Exchange服务器管理员查找并更正吗?如果有帮助,它将托管在intermedia.net上。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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