You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

开发Outlook插件:寻求将邮件作为附件转发的最简API方案

实现Outlook Add-in邮件作为附件转发的最简方案

嘿,我来帮你捋清楚这个问题——你提到的三个REST API组合确实是常规思路,但其实有更简便的方案,尤其是如果你用Office JavaScript API(而非纯REST API)开发的话,能省不少事。

首选方案:用Office JS的forwardAsync一步搞定

Office JavaScript API专门提供了直接把原邮件作为附件转发的能力,完全不需要调用多个REST接口,这应该是最简的实现方式了:

  • 权限要求:确保你的Add-in已经申请了ReadWriteMailbox或者至少ReadWriteItem权限(在manifest里配置),这样才能操作邮件转发。
  • 核心代码示例
Office.context.mailbox.item.forwardAsync(
  {
    toRecipients: ["target@example.com"], // 目标收件人
    attachOriginalItem: true // 关键参数:把原邮件作为附件添加
  },
  (asyncResult) => {
    if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
      console.log("转发邮件已生成,可直接发送或让用户编辑");
      // 如果需要自动发送,还可以调用后续的sendAsync,但注意部分场景需要用户确认
    } else {
      console.error("转发失败:", asyncResult.error.message);
    }
  }
);

这个方法会直接创建包含原邮件附件的转发邮件,要么弹出让用户编辑后发送,要么你可以配合sendAsync直接发送(视你的需求而定)。

如果一定要用REST API:优化为两步操作

如果你因为某些原因必须用Graph REST API,虽然没有单一API直接完成,但可以把流程从三步简化为两步:

  1. 创建转发草稿时直接附加原邮件:调用CreateForwardDraft接口时,在请求体里直接添加ItemAttachment类型的附件,指向原邮件的ID,这样就不用再单独调用UpdateMessages来添加附件了。
  2. 发送草稿:调用SendDraftMessages发送刚才创建的草稿。

简化后的REST请求示例(Graph API v1.0):

POST /me/messages/{originalMessageId}/createForward
Content-Type: application/json

{
  "ToRecipients": [{"EmailAddress": {"Address": "target@example.com"}}],
  "Attachments": [
    {
      "@odata.type": "#microsoft.graph.itemAttachment",
      "Name": "原邮件",
      "Item": {
        "@odata.id": "https://graph.microsoft.com/v1.0/me/messages/{originalMessageId}"
      }
    }
  ]
}

创建完草稿后,拿到草稿的ID,再调用POST /me/messages/{draftId}/send即可完成发送。

总结

最省心的还是用Office JavaScript API的forwardAsync,它是专门为Add-in场景设计的,代码少、逻辑简单,不需要处理REST API的身份验证和多请求协调。如果必须用REST API,那上述两步法也比原来的三步更高效。

内容的提问来源于stack exchange,提问作者tkj

火山引擎 最新活动