python - 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 上。
我非常感谢您的帮助。
解决方案
[将评论提取为实际答案]
ErrorAccessDenied
当您请求您无权访问的项目或私有项目上的私有字段时,通常由服务器引发。虽然听起来很奇怪,但您发送的文件夹可能包含您无权访问的项目。您可以通过以小块获取项目来缩小范围,直到您遇到可以提升的东西ErrorAccessDenied
。如果您启用调试日志记录,请求和响应 XML 将告诉您确切的 ID。
您可以通过仅从已发送项目中请求非私有字段来解决此问题,例如exchange_account.sent.all().only('subject', 'start', 'end')
. 否则,如果您可以找到行为不端的项目并被允许将其删除,请执行此操作。
推荐阅读
- sql-server - 条件条件下最后一次数据输入的最大日期
- nosql - 如何设置索引以便用户可以通过电子邮件或 Dynamodb 中的用户名登录
- mysql - 将两个 MySQL select 语句组合在一起
- flutter - Flutter - 键盘高度的媒体查询始终返回零
- google-apps-script - 使 google-sheet 图表legand 可过滤
- javascript - 使用 Promise 链接多个异步函数
- powershell - 使用 PowerShell 获取 SharePoint Online 中所有网站集中的所有子网站(所有级别)的计数
- html - 如何让数组在Angular 7中显示对其子项的迭代
- r - 如何将 R 界面中从“绿色”到“红色”的单元格着色到 DataTables?
- python-3.x - SSL 套接字 Python 非阻塞