在Outlook邮件中发送邮件后,itemId发生了变化

Raj*_*eev 2 office-js outlook-web-addins

在撰写模式下,我收到itemId邮件项目saveAsync

一旦邮件项目发送,项目Id进来的Office.context.mailbox.item.itemId是比什么是在撰写模式给予不同的。

用于进入itemId撰写模式的代码:

var itemId = Office.context.mailbox.item.itemId;
if (itemId === null || itemId == undefined) {
    Office.context.mailbox.item.saveAsync(function (result) {
        itemId = result.value;
    });
}
Run Code Online (Sandbox Code Playgroud)

发送电子邮件后,我使用以下方法验证itemId了“发件箱”中的电子邮件:

`Office.context.mailbox.item.itemId`
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,情况有所不同。

根据文档itemId应该相同:

itemId属性在撰写模式下不可用。如果需要商品标识符,则saveAsync可以使用该方法将商品保存到商店,这将AsyncResult.value在回调函数的参数中返回商品标识符。

我做错了什么?

Mar*_*eur 5

首先,重要的是要了解项目的itemId不是静态值。每当在Exchange中移动项目时,ID都会更改。从EWS文档中

Exchange中的标识符是不透明的。例如,EwsId是从几条信息中创建的,这些信息对您(作为开发人员)并不重要,但对Exchange却很重要。

至于发生这种情况的原因,是因为这saveAsync会将电子邮件保存到“草稿”文件夹中。发送后,该项目首先移至“发件箱”,然后移至“已发送邮件”文件夹。每个文件夹更改(草稿,发件箱和已发送邮件)都会导致该itemId字段发生更改。