You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Office.js在Outlook网页版插件中实现自定义发送邮件按钮

当然可行!针对Outlook网页版,完全可以通过Office.js实现自定义发送按钮,复刻原生的发送逻辑,下面给你一步步拆解实现思路:

实现自定义发送按钮的核心方案

1. 先理清楚发送需要的关键数据

你已经能获取发件人邮箱、主题和正文,这是基础。另外还要补充两个关键信息:

  • 原邮件的会话关联ID:通过Office.context.mailbox.item.conversationId获取,确保回复的邮件能正确归属到原会话中
  • 收件人/抄送人:如果是回复场景,可以直接从原邮件的Office.context.mailbox.item.to、cc属性读取,也可以让用户在你的自定义编辑器里修改

2. 两种实现方式任选

方式一:同步编辑器内容到原生窗口后发送(简单易上手)

这种方式依赖Outlook原生的回复编辑窗口,把你自定义编辑器的内容同步过去后,调用原生发送接口完成操作,逻辑更简洁:

// 假设你已经从自定义编辑器拿到了主题subject和HTML格式的正文htmlContent
async function sendCustomReply() {
  try {
    // 先打开原生回复窗口(如果当前没有打开的编辑窗口)
    await Office.context.mailbox.displayReplyFormAsync();
    
    // 同步主题到原生窗口
    await Office.context.mailbox.item.subject.setAsync(subject);
    
    // 同步HTML正文到原生窗口
    await Office.context.mailbox.item.body.setAsync(htmlContent, { 
      coercionType: Office.CoercionType.Html 
    });
    
    // 执行发送操作
    Office.context.mailbox.item.sendAsync((result) => {
      if (result.status === Office.AsyncResultStatus.Succeeded) {
        console.log("邮件发送成功!");
        // 这里可以加发送成功后的逻辑,比如关闭任务窗格、给用户提示
      } else {
        console.error("发送失败:", result.error.message);
      }
    });
  } catch (err) {
    console.error("操作出错:", err);
  }
}

方式二:直接通过EWS接口发送(更灵活但稍复杂)

如果不想依赖原生编辑窗口,完全自定义发送流程,可以用makeEwsRequestAsync调用Exchange Web Services接口,直接构造并发送邮件。这种方式需要处理XML格式的请求体,但能完全脱离原生窗口控制:

  1. 构造包含收件人、主题、正文、会话ID的EWS请求XML
  2. 调用Office.context.mailbox.makeEwsRequestAsync()发送请求
  3. 解析返回的响应判断发送是否成功

3. 权限配置不能忘

确保你的插件manifest.xml里配置了足够的权限,至少需要ReadWriteMailbox权限才能修改和发送邮件:

<Permissions>ReadWriteMailbox</Permissions>

4. 几个注意点

  • 测试时一定要在Outlook网页版的开发者沙箱环境中进行,避免权限或API兼容问题
  • 发送前最好做一下基础校验,比如收件人格式是否合法,避免发送失败
  • 回复场景一定要带上原邮件的conversationId,不然新邮件会变成独立会话

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:30:37