Azure事件订阅疑问:为何仅接收EmailDeliveryReportReceived,未收到追踪事件
排查
EmailEngagementTrackingReportReceived事件未推送的几个方向 - 邮件客户端阻止远程内容:多数邮件打开追踪依赖嵌入的1x1像素图实现,要是你手机上的邮件客户端开启了「阻止加载远程图片/内容」,这个像素图加载失败,服务端就不会触发互动追踪事件。先去客户端设置里确认是否允许加载外部内容。
- 推送延迟:互动事件的推送通常比送达事件慢,尤其是邮件服务负载高的时候。可以多等半小时,或者多发几封测试邮件,看看是不是只是延迟。
- 订阅配置未同步:虽然你截图里勾选了两个事件,但有可能配置没真正生效。试试取消订阅这两个事件,重新勾选保存一遍,确保配置同步到服务端。
- 鉴权中间件拦截:你的接口用了
authExpress中间件,检查下这个中间件的逻辑,会不会把EmailEngagementTrackingReportReceived类型的请求当成非法请求拦截了?可以临时注释掉中间件,测试能不能收到事件。 - 发送邮件时未开启追踪:有些邮件服务要求发送邮件时必须显式开启「打开追踪」开关,哪怕你订阅了事件,发送时没开的话,也不会生成互动事件。去发件的配置里确认下追踪功能是否启用。
- 代码解析问题:你的代码里用了
Event类型定义,会不会这个类型没包含EmailEngagementTrackingReportReceived的字段,导致解析时丢了事件?或者看看日志里有没有打印出这个类型的事件——有时候事件可能已经收到,但被后续逻辑忽略了。可以先把req.body的完整内容打出来,确认是否有该事件。
附你提供的接收代码:
app.post("/events", authExpress, (req, res) => { console.log("============ Event hook ==================="); console.log(`${JSON.stringify(req.body)}`) const eventList: Event[] = req.body; eventList.forEach((event) => { updateEmailLog(event); }); res.status(200).send("success"); });
内容的提问来源于stack exchange,提问作者Zim
相关产品推荐
相关产品推荐

