Outlook 365插件OnMessageSend事件fetch请求Outlook 364失效排查求助
问题描述
我已配置让Outlook 365在邮件发送事件(OnMessageSend)触发后发起fetch请求,该请求在Outlook网页版可正常工作,但在Outlook 364中无法运行。
请求代码如下:
fetch(asyncResultBOParsed.baseURL + "/persons/" + personId + "/notes/WithDocument", { headers: { accept: "application/json, text/plain, */*", "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", authorization: asyncResultBOParsed.access_token, }, referrerPolicy: "same-origin", mode: "cors", body: formData, method: "POST", }).then(function () { event.completed({ allowEvent: true, }); }) .catch(function (e) { event.completed({ allowEvent: false, errorMessage: e.name + " " + e.message, }); });
我始终得到如下错误结果,尝试过向localhost及非localhost端点发送POST请求,请问该如何调试此问题?

调试方案
- 启用Outlook桌面版开发者工具:按
F12打开工具(若无效,通过文件>选项>高级>开发人员工具勾选启用),切换到「网络」标签,重新触发发送事件,查看请求的状态码、头信息、响应内容,定位是请求发送失败、服务器无响应还是CORS问题。 - 适配桌面版CORS策略:Outlook桌面版运行环境和网页版不同,可先移除
mode: "cors"改为mode: "no-cors"测试,验证请求能否发送;同时确保后端CORS配置允许桌面版的请求来源。 - 检查HTTPS证书有效性:如果请求HTTPS端点,桌面版对证书校验更严格,需确保服务器证书为正规CA签发,避免自签名证书被拦截。
- 打印完整错误细节:在catch块中添加
console.log('错误详情:', e),到开发者工具「控制台」查看完整错误栈,不要仅返回简化的错误信息。 - 简化请求排查问题:先发送不含formData、自定义头的极简POST请求,确认基础请求正常后,再逐步添加参数定位触发问题的部分。
- 排查网络环境限制:测试在非企业内网环境下运行,排除代理、防火墙对请求的拦截;同时检查Outlook桌面版的安全设置,确认未阻止外部请求。
内容的提问来源于stack exchange,提问作者Konstantin Vahrushev
相关产品推荐
相关产品推荐

