我正在使用exchangelib维护一个应用程序。我需要能够将电子邮件移动到不同的文件夹,这很可能使用exchangelib。但是,我应该让我的客户手动执行相同的操作。我希望能够做的是看看以后将哪些电子邮件移动到哪个文件夹。所以我需要一个电子邮件的跟踪ID。所以问题可能是:
message_id
字段是否作为此唯一标识符? message_id
批量提取电子邮件。这是什么最好的做法?我可以通过调用item_id
来使用changekey
和account.fetch
来接收电子邮件,但是,当用户在不同文件夹中移动电子邮件时,它们会发生变化,而message_id
则不会。 答案 0 :(得分:1)
重新。 1,您似乎已经发现移动项目时message_id
保持不变。我无法从EWS找到任何有关此事实的硬文档,因此请务必进行大量测试。
重新。 2,您只能将account.fetch
与item_id
值一起使用。但是,有一些事情需要注意:
item.move()
时,item.item_id
和item.changekey
属性会更新到新位置,您可以存储该位置以供将来批量操作使用。请参阅https://github.com/ecederstrand/exchangelib/blob/3a1def29951d26c8a1b7021c7582c3d118181140/exchangelib/items.py#L365 message_id
批量提取,首先将message_id
翻译为item_id
。这会进行FindItem
通话,然后进行GetItem
通话:item_ids = account.inbox.filter(message_id__in=<your_message_ids>) \
.values_list('item_id', 'changekey')
bulk_items = account.fetch(item_ids)
您可能希望对<your_message_ids>
项进行分块,因此__in
过滤器不会变得非常大。