如何使 `Office.context.mailbox.item.ItemId` 返回的 ID 保持不变,使其在电子邮件的撰写和发送状态中相同?

How to make ID what is returned by `Office.context.mailbox.item.ItemId` constant, so it is same in Compose and in Sent status of the email?

我正在为 outlook 开发插件。所以我使用 office.js api。在我的插件中,我想要在新 window 中打开电子邮件的选项。我将电子邮件 ID 存储在数据库中。

问题是当电子邮件处于撰写状态时,我“抓取”了电子邮件的 ID,例如,电子邮件 ID 是 AAA。我现在在已发送文件夹中按 sent btn 和电子邮件。
应该的,然后我想使用我的插件打开该电子邮件,但我不能,因为该电子邮件的 id 现在是 'BBB'!
我通过在 Outlook 中按下该电子邮件并调用此 javascript 代码 Office.context.mailbox.item.ItemId 检查了它,我发现电子邮件 ID 已更改。

问题是如何使 Office.context.mailbox.item.ItemId 返回的 ID 保持不变,以便在电子邮件的 composeSent 状态中相同?

在 graph.api 中你有 immutable ids 但我不知道如何在 office.js 中应用它们。api

首先,我建议在检索项目 ID 之前调用 Save 方法。例如,Outlook 对象模型中可用的 EntryID 属性 是在将项目保存到商店时设置的。

另外,不同的 Outlook 客户端将 return 他们利用的协议中的 itemId。 REST 和 EWS 项目 ID 的转义方式不同,这导致同一项目的 itemId 之间存在差异。

Office.context.mailbox.item.itemId 编辑的 ID return 是一个 EWS 项目 ID。您可以使用 Office.context.mailbox.convertToRestId.

将其转换为 rest/graph 项目 ID

在桌面版 Outlook 中,当一个项目移动到另一个 folder/store 时,EntryId 可能会发生变化。看看是不是这样

不可变 ID 是特定于图的。 EWS 中的 ID(这是 JS 插件使用的)和 MAPI(由扩展 MAPI - 本机 Outlook API - 以及 Outlook 对象模型使用)在项目是感动了。

您最好的选择是向项目添加您自己的自定义 属性,然后在项目移动到其他文件夹时搜索它。