myItem.Id,这在系统之间是唯一的

问题描述 投票:0回答:1

我正在使用this链接中的C#代码段通过EWS API 2.0访问我的Exchange 2010服务器。现在,我们将邮箱迁移到云,并将收件箱及其子文件夹中的所有电子邮件迁移到云中。

我的问题是,何时发生每封电子邮件的myItem.Id值仍保持不变? Exchange管理员说,这将在Exchange服务器之间是唯一的。但是到目前为止,我所做的测试都没有发现任何证据。这些电子邮件被馈入数据库,并且当邮箱迁移到云中时,由于迁移导致myItem.Id在两个系统之间都不唯一,因此处理这些电子邮件的应用程序会将它们视为新电子邮件。

c# api exchangewebservices
1个回答
0
投票

我的问题是,何时发生,每封电子邮件的myItem.Id值仍将保持不变?

[不会,如果邮件只是在文件夹之间移动,则ID将会更改。 EWSid基于基础Exchange LongTermId https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxcdata/8796d8f9-0052-4a5a-ab8e-e780b9c8a6bb。因此,它同时包含FolderId和MessageId信息(涉及全局计数器值)以及一些EWS特定标志。它本质上是一个定位器,因此它需要是全局唯一的,但是在Office365中,底层商店信息会发生变化(这会影响此ID的FolderId部分),因此ewsId也将发生变化。 Office365提供了immutableid的https://docs.microsoft.com/en-us/graph/outlook-immutable-id,但您需要使用Graph API,因为它们没有将它们反向移植到EWS。

对于您的迁移,您可能要考虑在项目上创建自己的自定义属性,以便在迁移后仍可以使用搜索(或使用现有属性,例如InternetMessageId或PidtagSearchkey)找到它们;

© www.soinside.com 2019 - 2024. All rights reserved.