Одна из причин использовать Haskimail — это автоматическая обработка всех возможных возвратов от почтовых серверов. Однако вашему приложению все равно нужна информация об этих возвратах в удобном формате. Вы можете использовать API возвратов, чтобы запрашивать (pull) данные, но для многих приложений проще настроить вебхук. С его помощью Haskimail будет сам отправлять (push) данные о возвратах в ваше приложение сразу же, как только они произойдут. Вебхук для возвратов отправляет данные в ваше приложение в простом для парсинга формате JSON сразу после того, как Haskimail обработает возврат.
Вебхуки для возвратов срабатывают при возврате исходящих писем. Таким образом, ваш вебхук будет получать данные о жестких (Hard Bounce) и мягких (Soft Bounce) возвратах, возвратах по причине недоставки (Undeliverable) и т.д.
Примечание: Дата и время в поле BouncedAt передаются в формате ISO 8601.
Войдите в аккаунт Haskimail, выберите нужный Сервер и Канал, а затем перейдите на вкладку «Вебхуки». Нажмите «Добавить вебхук», введите URL в поле «URL вебхука» и установите флажок напротив события «Возвраты» (Bounce).
Вы можете настроить триггер Bounce с помощью API Вебхуков как при создании нового вебхука, так и при редактировании уже существующего.
Справа показан пример полного JSON-документа, который будет отправлен POST-запросом на ваш URL вебхука. Ниже приведено краткое описание некоторых ключевых полей:
{
"RecordType": "Bounce",
"MessageStream": "outbound",
"ID": 4323372036854775807,
"Type": "HardBounce",
"TypeCode": 1,
"Name": "Hard bounce",
"Tag": "Test",
"MessageID": "883953f4-6105-42a2-a16a-77a8eac79483",
"Metadata" : {
"a_key" : "a_value",
"b_key": "b_value"
},
"ServerID": 23,
"Description": "The server was unable to deliver your message (ex: unknown user, mailbox not found).",
"Details": "Test bounce details",
"Email": "ivan@example.com",
"From": "masha@example.com",
"BouncedAt": "2019-11-05T16:33:54.9070259Z",
"DumpAvailable": true,
"Inactive": true,
"CanActivate": true,
"Subject": "Test subject",
"Content": "<Full dump of bounce>"
} Если вы ведете разработку на локальной машине или у вас нет публичного URL для вашего API, вы можете использовать пример POST-запроса, показанный справа. Замените <your-url> на API-маршрут, который вы хотите использовать в качестве URL вашего вебхука. Этот curl-запрос позволит вам убедиться, что ваш URL может принимать запросы в том же JSON-формате, который будут использовать серверы Haskimail.
curl <your-url> \
-X POST \
-H "Content-Type: application/json" \
-d '{
"ID": 4323372036854775807,
"Type": "HardBounce",
"TypeCode": 1,
"Name": "Hard bounce",
"Tag": "Test",
"MessageID": "883953f4-6105-42a2-a16a-77a8eac79483",
"ServerID": 23,
"Description": "The server was unable to deliver your message (ex: unknown user, mailbox not found).",
"Details": "Test bounce details",
"Email": "ivan@example.com",
"From": "masha@example.com",
"BouncedAt": "2014-08-01T13:28:10.2735393-04:00",
"DumpAvailable": true,
"Inactive": true,
"CanActivate": true,
"RecordType": "Bounce",
"Subject": "Test subject"
}' Существует множество способов использования данных, которые предоставляет вебхук для возвратов: