我一直在使用python中的exchangelib库来访问邮箱帐户中的邮箱.它一直很有效.今天突然,我收到了一个错误,说,

KeyError: 'folders' 
During handling of the above exception, another exception occured:
exchangelib.errors.ErrorAccessDenied: Not allowed to access Non IPM folder.

这一行代码就在这里.

msg_folder= my_account.root / 'Top of Information Store' / 'my_subfolder'

就像我说的,这已经工作了一年多了.仔细判断了微软应用程序的访问是否正确,它是正确的.最新的exchangelib版本似乎是3/8/24,从那以后它就一直在工作,所以不可能是这样.

另一个奇怪的是,一个单独的脚本可以访问收件箱中的邮件,只是收件箱的sibling 文件夹引发了错误.

我没有找到任何关于这个错误的东西.有什么办法解决吗?

推荐答案

这是由于O365最近的变化引起的.我们也许可以在exchangelib中找到解决方法.在此之前,解决办法是使用双斜杠导航到文件夹:

msg_folder = my_account.root // 'Top of Information Store' // 'my_subfolder'

这不是首先收集完整的文件夹层次 struct 并导航客户端文件夹缓存,而是在每次达到新的//级别时向服务器询问特定的子文件夹.

更新:修复提供https://github.com/ecederstrand/exchangelib/issues/1290

Python相关问答推荐

如何使用Google Gemini API为单个提示生成多个响应?

我从带有langchain的mongoDB中的vector serch获得一个空数组

Deliveryter Notebook -无法在for循环中更新matplotlib情节(保留之前的情节),也无法使用动画子功能对情节进行动画

将整组数组拆分为最小值与最大值之和的子数组

django禁止直接分配到多对多集合的前端.使用user.set()

将tdqm与cx.Oracle查询集成

在np数组上实现无重叠的二维滑动窗口

让函数调用方程

ModuleNotFoundError:没有模块名为x时try 运行我的代码''

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

如果有2个或3个,则从pandas列中删除空格

有没有办法让Re.Sub报告它所做的每一次替换?

SpaCy:Regex模式在基于规则的匹配器中不起作用

比较两个有条件的数据帧并删除所有不合格的数据帧

对于标准的原始类型注释,从键入`和`从www.example.com `?

为什么按下按钮后屏幕的 colored颜色 保持不变?

.awk文件可以使用子进程执行吗?

普洛特利express 发布的人口普查数据失败

按最大属性值Django对对象进行排序

如何在Python中画一个只能在对角线内裁剪的圆?