Как связать sendgrid webhook sg_message_id с отправленной почтой?
Sendgrid Webhook имеет sg_message_id
Но ответ Web API v2 при отправке почты не имеет sg_message_id
, На самом деле, есть только сообщение, показывающее только success
или не удалось.
Итак, как мне установить связь между отправленной почтой и обратным вызовом webhook?
Я проверил прошлые вопросы в SO, но это не дает решения для этого.
Спасибо.
3 ответа
Вы можете использовать уникальные аргументы. Возьмите свой уникальный идентификатор (например, первичный ключ) и передайте его в sendgrid API во время отправки электронной почты. Вы вернете его обратно в событие.
https://sendgrid.com/docs/API_Reference/SMTP_API/unique_arguments.html
РЕДАКТИРОВАТЬ: Лучше всего использовать пользовательские аргументы (см. Документацию). Что не видно из документации (на сегодняшний день).
В Web API v3 ответ содержит специальный заголовок X-Message-Id
(см. https://sendgrid.com/docs/Glossary/x_message_id.html).
Это может быть позже сопоставлено с sg_message_id
в webhook: https://sendgrid.com/docs/Glossary/message_id.html
Документация не проясняет, но X-Message-Id
заголовок на самом деле не равен sg_message_id
, но это префикс sg_message_id
,
Например:
X-Message-Id = "MUvGg3V1ThOu3oe8eRqFrA"
sg_message_id = "MUvGg3V1ThOu3oe8eRqFrA.filter0001p2iad2-21183-5AF0BD9B-E.0"
Вызов Web APIv2, который отправляет электронное письмо, действительно отвечает только ответом {message:"success"}, но sg_message_id в этот момент не генерируется. Ответ на вызов API просто подтверждает, что электронное письмо было отправлено в SendGrid для обработки.
Электронное письмо отправляется в SendGrid, и там оно получает значение sg_message_id, которое предоставляется через сообщения Eventhoho.