如何通过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-
相关产品推荐
相关产品推荐

