【发布时间】:2016-02-13 08:48:47
【问题描述】:
Sendgrid webhook 有 sg_message_id
但是发送邮件时Web API v2的响应没有sg_message_id。
实际上,只有消息只显示success 或失败。
那么,我如何将发送的邮件和 webhook 回调关联起来?
我在 SO 中检查了过去的问题,但它没有提供解决方案。
谢谢。
【问题讨论】:
Sendgrid webhook 有 sg_message_id
但是发送邮件时Web API v2的响应没有sg_message_id。
实际上,只有消息只显示success 或失败。
那么,我如何将发送的邮件和 webhook 回调关联起来?
我在 SO 中检查了过去的问题,但它没有提供解决方案。
谢谢。
【问题讨论】:
发送电子邮件的 Web APIv2 调用确实只响应 {message :"success"} 答案,但此时不会生成 sg_message_id。 API 调用应答只是确认电子邮件已发送到 SendGrid 进行处理。
电子邮件被发送到 SendGrid,并在那里接收通过 Event Webhook 帖子提供的 sg_message_id 值。
【讨论】:
您可以使用唯一的参数。获取您的唯一 ID(如主键)并在发送电子邮件期间将其提供给 sendgrid API。您将在事件 webhook 中取回它。
https://sendgrid.com/docs/API_Reference/SMTP_API/unique_arguments.html
【讨论】:
custom_args
编辑:最佳实践似乎是使用custom arguments(请参阅documentation)。这在文档中并不明显(截至今天)。
在 Web API v3 中,响应包含一个特殊的标头 X-Message-Id(请参阅 https://sendgrid.com/docs/Glossary/x_message_id.html)。
这可以稍后与 webhook 中的sg_message_id 匹配:https://sendgrid.com/docs/Glossary/message_id.html
文档没有说清楚,但是X-Message-Id这个header其实并不等于sg_message_id,而是sg_message_id的前缀。
例如:
X-Message-Id = "MUvGg3V1ThOu3oe8eRqFrA"sg_message_id = "MUvGg3V1ThOu3oe8eRqFrA.filter0001p2iad2-21183-5AF0BD9B-E.0"【讨论】: