如何使用 Exchangelib 获取 Message 的父文件夹名称 python

How to get the parent folder name of Message with Exchangelib python

我在 python 3.7 中通过使用 exchangelib 对帐户进行过滤获得了一个 Item 对象。它是一个电子邮件对象。我需要找到这个项目的父文件夹名称。我特别需要文件夹的 name 字段(这是为了跟踪特定电子邮件在邮箱中的移动位置)。

我可以在项目对象中看到一个字段 parent_folder_id,我认为它 returns 是一个有效的文件夹 ID。这也适用于 account.root.get_folder(folder_id=idObj) 由于我无法更改的 Exchange 设置而超时的生产邮箱。几乎任何缓存都会因超时而失败的请求。

account=Account(...)
mailItems=account.inbox.all().filter(subject="foo")
print([i.parent_folder_id.id for i in mailItems])

这将打印文件夹 ID 列表。我需要这些文件夹的名称。不清楚如何进行。任何帮助将不胜感激

由于您只搜索 account.inbox 而不是其子文件夹,因此 parent_folder_id 将始终指向 account.inbox

目前还没有很好的 API 来查找文件夹,例如ID。目前最好的解决方案是使用文件夹 QuerySet:

from exchangelib.folders import SingleFolderQuerySet

f = SingleFolderQuerySet(
    account=account,
    folder=account.root
).get(id=i.parent_folder_id.id)