如何在Outlook插件撰写端通过Office JS获取原邮件主消息ID?
在Outlook插件撰写场景中获取回复/转发的原邮件主消息ID
在回复或转发邮件的撰写场景下,你可以通过Office JavaScript API的异步方法获取原邮件的主消息ID,具体实现方式如下:
核心实现逻辑
只有在回复/转发的撰写窗口中,Office.context.mailbox.item.getEntities().messageId才会指向原邮件的消息ID,需通过异步方法getAsync获取结果,避免阻塞主线程。
示例代码
// 先校验当前场景是否为回复/转发的邮件撰写模式 if (Office.context.mailbox.item.itemType === Office.MailboxEnums.ItemType.Message) { const composeType = Office.context.mailbox.item.getComposeType(); if ([Office.MailboxEnums.ComposeType.Reply, Office.MailboxEnums.ComposeType.ReplyAll, Office.MailboxEnums.ComposeType.Forward].includes(composeType)) { // 异步获取原邮件主消息ID Office.context.mailbox.item.getEntities().messageId.getAsync((result) => { if (result.status === Office.AsyncResultStatus.Succeeded) { const originalMsgId = result.value; console.log("原邮件主消息ID:", originalMsgId); // 此处可添加你的业务逻辑,比如用该ID调用后端接口等 } else { console.error("获取失败:", result.error.message); } }); } else { console.log("当前不是回复/转发的撰写场景"); } }
关键注意事项
- 权限配置:插件
manifest.xml中需配置至少ReadItem或ReadWriteItem权限,才能访问邮件实体信息。 - 环境兼容:该API支持Outlook 2016及以上版本(Windows/Mac)、Outlook网页版和移动版,需确认目标环境兼容性。
- 异步规范:必须通过回调或Promise封装的
async/await处理结果,不能同步直接取值。
内容的提问来源于stack exchange,提问作者Zia ul Qamar
相关产品推荐
相关产品推荐

