Python exchangelib突然抛出ErrorAccessDenied,但凭据仍然有效
标题几乎说明了一切。我可以使用以下方法访问Exchange服务器:Python exchangelib突然抛出ErrorAccessDenied,但凭据仍然有效,python,exchangelib,Python,Exchangelib,标题几乎说明了一切。我可以使用以下方法访问Exchange服务器: credentials = Credentials( username='DOMAIN\\username', password='PASSWORD') exchange_account = Account( primary_smtp_address='someone@somewhere.com', credentials=credentials, autodiscover=True,
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 server管理员查找并更正哪些内容吗?如果有帮助的话,它将托管在intermedia.net上
非常感谢您的帮助。[将评论提取到实际答案中]
ErrorAccessDenied
通常由服务器在您请求您无权访问的项目或私人项目上的私人字段时引发。虽然听起来很奇怪,但您发送的文件夹可能包含您无权访问的项目。您可以通过在小块中获取项目来缩小其范围,直到遇到引发ErrorAccessDenied
的内容。如果启用调试日志记录,请求和响应XML将告诉您确切的ID
您可以通过仅从已发送的项目请求非私有字段来解决此问题,例如
exchange\u account.sent.all().only('subject','start','end')
。否则,如果您可以找到行为不正常的项目并允许将其删除,只需执行此操作。当凭据仍然有效时,用户名
用户可能不再具有对someone@somewhere.com
帐户。我的最佳选择是向您的Exchange管理员验证此信息。谢谢。即使这是为该特定用户分配的帐户,这是否可能?我的意思是,这不是一个用户试图访问其他人的帐户。这是用户试图访问自己的帐户。或者我不应该使用access\u type=DELEGATE?这很奇怪。在这种情况下,委托通常是正确的访问类型,但您始终可以尝试模拟。这很不幸。如果您在开始时发布了引发错误的代码,那就太好了。无论如何,ErrorAccessDenied
通常在您请求您无权访问的项目或私人项目上的私人字段时由服务器引发。虽然听起来很奇怪,但您的“已发送”文件夹可能以某种方式包含您无权访问的项目。您可以尝试通过获取短日期范围内的项目来缩小范围,直到遇到引发ErrorAccessDenied
的问题。如果启用调试日志记录,请求和响应XML将告诉您确切的ID。非常感谢!我认为这是问题的症结所在。有一些行为不端的物品。我一直在尝试,直到我找到它们,并能够将它们全部删除。现在我的整个“已发送邮件”框可以同步。当另一个出现时,我将按照您的建议尝试隔离特定的冒犯元素。你帮了大忙。