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

如何通过Outlook on-send加载项实现多外部收件人发送警告

可行性结论

该需求完全可通过Outlook on-send类型的Web加载项实现,Outlook官方JS API原生支持发送事件拦截、收件人字段读取、发送阻断/放行、用户提示的全流程能力,不需要额外依赖本地客户端组件。

具体实现方案

1. 加载项清单配置

首先修改加载项的XML清单文件,完成基础触发配置:

  • 将Permissions节点值设置为ReadWriteMailbox,获取读取邮件收件人信息的权限
  • 在ExtensionPoint节点下配置ItemSend类型的扩展点,指定发送事件触发的处理函数入口,无需额外配置功能按钮,发送动作会自动触发逻辑
  • 不需要声明密送、抄送字段的特殊读取权限,后续逻辑仅主动拉取To字段数据即可

2. 核心校验逻辑编写

在清单指定的事件处理函数中实现校验流程,注意全程仅读取To(收件人)字段内容,不读取Bcc(密送)、Cc(抄送)字段数据,避免非目标字段干扰判断:

  • 调用Office.context.mailbox.item.to.getAsync()方法拉取To字段的全部收件人信息
  • 拿到收件人列表后,逐个拆分邮箱地址的域名部分,和企业内部域名(含信任的子域、合作方白名单域)做匹配,统计非白名单的外部收件人数量
  • 若外部收件人数量小于2,直接调用event.completed({ allowEvent: true })放行发送
  • 若外部收件人数量大于等于2,先调用通知接口弹出明确的警告提示,再调用event.completed({ allowEvent: false })阻断本次发送,用户确认收件人无误后可重新点击发送

核心逻辑参考代码:

// 清单中绑定的on-send事件入口函数
function checkExternalRecipientsOnSend(event) {
  // 仅拉取To字段收件人,不读取密送、抄送字段
  Office.context.mailbox.item.to.getAsync((res) => {
    // 接口请求异常时默认放行,避免阻断正常发信,可按需接入错误日志上报
    if (res.status !== Office.AsyncResultStatus.Succeeded) {
      event.completed({ allowEvent: true });
      return;
    }

    // 替换为企业内部域名、信任的外部合作方域名白名单
    const trustedDomains = ["company.com", "subsidiary.company.com"];
    let externalCount = 0;

    res.value.forEach(recipient => {
      const email = recipient.emailAddress.toLowerCase();
      const domain = email.split('@')[1];
      // 域名不在白名单内则判定为外部收件人
      const isTrusted = trustedDomains.some(trustDom => {
        return domain === trustDom || domain.endsWith(`.${trustDom}`);
      });
      if (!isTrusted) externalCount++;
    });

    if (externalCount >= 2) {
      // 弹出错误提示,阻断发送
      Office.context.mailbox.item.notificationMessages.addAsync(
        "multi_ext_recipient_warn",
        {
          type: Office.MailboxEnums.ItemNotificationMessageType.ErrorMessage,
          message: "发送警告:收件人栏包含2个及以上外部联系人,请确认收件人信息、邮件内容无敏感信息后再尝试发送"
        },
        () => {
          event.completed({
            allowEvent: false,
            errorMessage: "多外部收件人校验未通过,请确认后重试"
          });
        }
      );
    } else {
      // 校验通过,放行发送
      event.completed({ allowEvent: true });
    }
  });
}

3. 部署注意事项

on-send类型加载项默认处于禁用状态,部署时需要在Exchange管理中心为目标用户组开启「发送时运行加载项」的相关权限,否则校验逻辑不会触发。全公司推广前建议先小范围灰度,确认白名单配置准确、不会误拦截正常发信后再全量推送。


内容的提问来源于stack exchange,提问作者Dan Jackson -LRSFC-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:51:08