Как получать оповещения по электронной почте от Sinch Mailgun в Discord с помощью веб-хуков

Источник: Transactional Email API Service For Developers | Mailgun•

Как получать оповещения по электронной почте от Sinch Mailgun в Discord с помощью веб-хуков

Представьте себе: ваша маркетинговая команда только что запустила кампанию на 50 000 подписчиков, но половина писем возвращается с ошибкой. Ваша служба поддержки гадает, почему клиенты не получают письма для сброса пароля. Между тем, команда разработчиков даже не подозревает, что ваша система…

8 октября 2026 г.

Электронная почта используется для всего: от подтверждений заказов до еженедельных рассылок, но большинство команд узнают о проблемах слишком поздно. Хорошая новость? Вам необязательно следовать этой тенденции.

Когда письма возвращаются с ошибкой (bounce), помечаются как спам или просто исчезают в цифровой пустоте, дорога каждая минута. Инженерным командам нужны мгновенные уведомления о сбоях транзакционных писем. Службе поддержки необходимо знать, когда сообщения не доходят до клиентов. Маркетологам требуется обратная связь в реальном времени о доставляемости кампаний.

Система событий Sinch Mailgun может стать вашей системой раннего предупреждения. Вместо того чтобы проверять панели мониторинга или ждать отчетов, вы можете направлять критические события электронной почты напрямую в Discord, где ваша команда уже работает.

Из этого руководства вы узнаете, как использовать функцию веб-хуков Sinch Mailgun для отслеживания определенных событий почты и отправки оповещений в Discord с помощью скрипта на Python.

Чтобы отправлять почтовые уведомления в Discord, вам необходимо заранее подготовить несколько условий.

Настройте домен в Sinch Mailgun

Чтобы использовать Sinch Mailgun в этом руководстве, вам нужно настроить несколько вещей на платформе Sinch Mailgun:

  • Настройте домен, способный принимать электронную почту в Sinch Mailgun. Если у вас есть собственный домен, вы можете настроить его сейчас, а затем подтвердить. На бесплатном тарифе вы автоматически получаете песочницу (sandbox-домен), которая и используется в этом руководстве:

Теперь ваша система Sinch Mailgun готова отправлять письма, по крайней мере, с тестового домена.

Создайте веб-хук Discord для получения сообщений

Веб-хук — это по сути HTTP-запрос, который может инициироваться внешним событием, например запущенным вами скриптом на Python.

В этом примере используется Discord. Если у вас еще нет сервера Discord, вам нужно создать его. Как только ваш сервер будет запущен и готов к работе, перейдите в настройки сервера (Server Settings), чтобы создать веб-хук:

Перейдя в настройки сервера, перейдите на вкладку «Интеграции» (Integrations), а затем нажмите «Создать веб-хук» (Create Webhook):

При нажатии кнопки «Создать веб-хук» автоматически создается новый веб-хук и ему присваивается имя. Задайте веб-хуку новое имя (подойдет любое понятное название):

Наконец, нажмите кнопку «Копировать URL веб-хука» (Copy Webhook URL). Это тот URL, на который ваш скрипт на Python будет отправлять уведомления. Сохраните этот URL на будущее.

Теперь ваш Discord настроен и готов принимать сообщения от вашего скрипта на Python.

Создайте и разместите свой скрипт на Python

Создание скрипта на Python требует выполнения множества подготовительных шагов: от создания и использования виртуальных окружений до размещения скрипта там, где он сможет получать данные от Sinch Mailgun.

В этом руководстве предполагается, что вы умеете настраивать и размещать скрипты на Python, поэтому мы не будем вдаваться в подробности того, как это делается. Это выходит за рамки данной статьи.

Вы можете разместить свой скрипт на Python локально и использовать такой сервис, как ngrok, для доступа к нему из интернета, либо разместить его онлайн с помощью сервиса наподобие PythonAnywhere. PythonAnywhere, как и Sinch Mailgun, имеет бесплатный тарифный план, которого должно быть достаточно для тестирования скрипта. На их бесплатном тарифе есть ограничения, особенно в отношении доменов, на которые вашему скрипту разрешено отправлять исходящие соединения. К счастью, их список разрешенных доменов включает URL-адреса для Discord, так что проблем возникнуть не должно.

Скрипт на Python в этом руководстве представляет собой простое Flask приложение, работающее на PythonAnywhere. Flask — это легкий фреймворк для веб-приложений, написанный на Python. В качестве бонуса PythonAnywhere поддерживает Flask «из коробки».

Приложение может быть запущено в виде единого файла с именем flask_app.py:

Этот код содержит несколько ключевых функций:

  • extract_mailgun_data(request) принимает полезную нагрузку (payload) от Sinch Mailgun и разделяет ее на две разные части: данные подписи и данные события. Затем эти данные передаются в другие функции для дальнейшего использования.
  • verify_mailgun_signature(token, timestamp, signature) ищет ключ подписи, отправленный в составе полезной нагрузки от Sinch Mailgun. Это необходимо для проверки того, что полученная вашим скриптом полезная нагрузка действительно поступила из Sinch Mailgun, а не из какого-то другого, возможно, вредоносного источника. Подробнее о защите веб-хуков Sinch Mailgun читайте в этой документации.
  • send_discord_alert(title, description, color=0xff0000, fields=None) — это функция, вызываемая различными эндпоинтами в вашем скрипте для форматирования и отправки сообщения в веб-хук Discord. У нее есть значение цвета по умолчанию, но его можно переопределить позже.
  • Различные эндпоинты (или маршруты) распределены следующим образом: / выводит сообщение в браузере, чтобы вы могли убедиться, что ваше приложение Flask запущенно и работает. /bounced обрабатывает события возврата сообщений (bounced) от Sinch Mailgun. /delivered можно использовать для тестирования всего рабочего процесса, так как не всегда удается сгенерировать событие возврата или недоставки, а событие успешной доставки сгенерировать легко.
  • / выводит сообщение в браузере, чтобы вы могли убедиться, что ваше приложение Flask запущенно и работает.
  • /bounced обрабатывает события возврата сообщений (bounced) от Sinch Mailgun.
  • /delivered можно использовать для тестирования всего рабочего процесса, так как не всегда удается сгенерировать событие возврата или недоставки, а событие успешной доставки сгенерировать легко.

Вы можете перейти непосредственно к эндпоинту /test вашего приложения, чтобы получить тестовое сообщение в Discord без участия Sinch Mailgun. Это отличный способ выяснить, работает ли часть вашего приложения, отвечающая за Discord:

Не забудьте заменить переменную <REPLACE_WITH_DISCORD_WEBHOOK_URL> на URL, который вы ранее скопировали из Discord.

После запуска скрипта вы сможете перейти по корневому эндпоинту (/) и увидеть сообщение Mailgun Webhook Handler is running! Ваше приложение Flask теперь готово принимать данные от Sinch Mailgun.

Настройте веб-хуки в Sinch Mailgun

Теперь, когда ваш скрипт на Python готов принимать данные и перенаправлять их на веб-хук, созданный в Discord, вы можете наконец настроить веб-хуки в Sinch Mailgun.

Вы можете задаться вопросом, почему нельзя просто отправлять данные напрямую на URL веб-хука Discord.

На это есть две причины:

  • Вы не можете изменить или контролировать полезную нагрузку, которую Sinch Mailgun отправляет на веб-хук.
  • Получающий веб-хук в Discord также ожидает определенный формат полезной нагрузки.

Именно поэтому вам нужен промежуточный скрипт (например, ваш скрипт на Python), чтобы разобрать данные от Sinch Mailgun и преобразовать их в формат, понятный Discord.

Вы можете начать с создания веб-хука для доставленных писем. Перейдите в раздел Webhooks в меню Sending:

И нажмите кнопку Add webhook:

Выберите тип события (Event type) как Delivered Messages и введите URL вашего приложения на Python с правильным эндпоинтом для обработки доставленных сообщений:

Наконец, нажмите кнопку Create Webhook. Созданный вами веб-хук должен появиться в списке:

Вы можете повторить эту процедуру, добавив веб-хуки для других типов событий (например, bounced) и указав для них соответствующие эндпоинты в вашем приложении.

После создания необходимых веб-хуков вам понадобится ключ подписи веб-хука. На той же странице, где отображается список созданных веб-хуков, должен быть виден и ваш ключ подписи:

Скопируйте этот ключ и обновите свою переменную Python с именем <REPLACE_WITH_WEBHOOK_SIGNING_KEY>, подставив туда только что скопированный ключ.

Протестируйте всё

Теперь, когда все элементы цепочки настроены и ожидают данных, вы можете отправить тестовое письмо на контролируемый вами почтовый ящик.

Вы можете использовать простую команду curl для отправки электронного письма через API Sinch Mailgun. Вам просто нужно создать ключ API, что можно сделать, следуя инструкциям из этой статьи. Не забудьте скопировать ключ API сразу после его создания, так как в целях безопасности он отображается только один раз. В противном случае вам придется удалить ключ и создать его заново.

Получив ключ, вы можете использовать curl для отправки тестового письма:

Если вызов API пройдет успешно, вы должны получить полезные данные в формате JSON, подтверждающие успешность вызова:

Если все пройдет хорошо, вы должны получить сообщение в своем канале Discord:

Как только письмо будет успешно доставлено, в Discord придет оповещение. Теперь вы успешно интегрировали веб-хук на Python, на который Sinch Mailgun может отправлять данные. В свою очередь, веб-хук на Python извлекает и форматирует необходимые данные из POST-запроса от Sinch Mailgun и отправляет аккуратно отформатированное сообщение на ваш сервер Discord.

Следующие шаги

Предстоит еще кое-что сделать, но все основные строительные блоки уже на месте. Вы можете изменять скрипт Python по своему усмотрению.

Вот несколько моментов, которые следует учесть:

Эту базовую настройку можно расширить для работы с различными командами в вашей компании:

  • Инженерные команды могут настроить оповещения о таких событиях, как постоянные сбои доставки или задержки отправки, чтобы оперативно реагировать на проблемы в системе или неверную конфигурацию почтового сервера.
  • Команды поддержки могут отслеживать такие события, как отклонение или возврат писем для определенных критически важных сообщений, например, сброса пароля или отправки счета.
  • Маркетинговые команды могут захотеть отслеживать события, связанные с вовлеченностью, такие как отписка, открытие писем или жалобы. Внеся небольшие изменения в скрипт, вы можете отправлять оповещения только при выполнении определенных условий; например, при высоком уровне отписок от новой кампании.

Подведение итогов

В этом руководстве вы узнали, как вызывать веб-хуки для определенных типов событий, чтобы [Sinch Mailgun[(https://www.mailgun.com/) мог отправлять оповещения напрямую в Discord через веб-хук Python. Sinch Mailgun помогает создавать такие рабочие процессы, чтобы гарантировать мгновенную доставку критически важных оповещений в нужные каналы связи. Это снижает потребность в ручном вмешательстве, улучшает время отклика и оптимизирует рабочие процессы ваших инженеров.

Это лишь небольшой пример автоматизации, которой можно достичь с помощью Sinch Mailgun. Зарегистрируйте бесплатную учетную запись, изучите документацию и узнайте о других возможностях, с помощью которых Sinch Mailgun может помочь вам оптимизировать рабочие процессы электронной почты и интеграции.

Держите меня в курсе! Получайте полезные материалы на свою электронную почту каждую неделю.

О чём эта статья

Ещё в разделе «Маркетинг и реклама»

Все →

Ещё от Mailgun