通过F5自定义头重定向SendGrid Webhook事件的配置咨询
结论
SendGrid 原生不支持将你添加到邮件里的自定义头自动注入到 Event Webhook 的请求头中返回,你当前的代码实现也无法将自定义值同步到 Webhook payload 里,具体说明和可行方案如下:
现有实现的问题
你当前代码里调用 msg.AddHeaders(identifiers) 是给最终发出的邮件本身添加头信息,这些头仅会出现在收件方收到的邮件头中,不会被 SendGrid 采集同步到 Webhook 事件数据里。
可行方案
如果你需要将application、resource两个值用于 F5 iRule 重定向逻辑,可按以下步骤实现:
- 第一步:先将自定义值通过自定义参数的方式传给 SendGrid,保证值能出现在 Webhook payload 中,修改代码如下:
var client = new SendGridClient("API_KEY"); var from = new EmailAddress("test@example.com", "Example User"); var subject = "Testing with SendGrid API"; var to = new EmailAddress("joe@test.com", "Example User"); var plainTextContent = "Test Content"; var htmlContent = "<strong>Testing with HTML content</strong>"; var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); var identifiers = new Dictionary<String, String>(); identifiers["application"] = "APP_NAME_GOES_HERE"; identifiers["resource"] = "RESOURCE_NAME_GOES_HERE"; // 替换AddHeaders为AddCustomArgs,让自定义值进入Webhook payload msg.AddCustomArgs(identifiers); var response = await client.SendEmailAsync(msg);
- 第二步:根据你的业务场景选择适配的请求头注入方式:
- 如果你的
application、resource是全局/当前 Webhook 维度的固定值,可直接在 SendGrid 后台的 Webhook 配置页手动添加自定义请求头,填入固定值即可,所有该 Webhook 发出的请求都会携带这两个头,F5 iRule 可直接读取。 - 如果两个值是每封邮件动态生成的,可在 F5 前面加一层轻量转发服务:先接收 SendGrid 的 Webhook 请求,从请求体的事件 payload 中取出
application、resource的值,写入请求头后再转发给 F5,iRule 就能基于头的值执行重定向逻辑。
- 如果你的
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

