Email Inbox (приём писем как уведомлений)
Email Inbox — это «почтовый ящик», у которого вместо вашего IMAP — канал Notifly. Создав ящик, вы получаете уникальный email-адрес: всё, что на него приходит, превращается в обычное уведомление с заголовком письма и его телом и доставляется во все ваши клиенты (web, Android, desktop) как любое другое push-сообщение.
Это удобно, когда внешняя система умеет только email и научить её ходить в HTTP — слишком дорого:
- алёрты от хостингов, биллингов, RBL и регистраторов;
- уведомления от CI/CD, системы бэкапов, сторонних SaaS;
- transactional email от вашего же бекенда (заказы, регистрации) без отдельного канала push;
- алёрты от старых железных мониторингов, которые умеют только SMTP.
Как это работает
Заголовок раздела «Как это работает»SMTP-отправитель ──► <local>+<alias>@<домен> │ ▼ Yandex Cloud Mail Trigger │ ▼ Cloud Function notifly-email │ 1. достать alias из адреса (To / X-Original-To / Delivered-To) │ 2. найти EmailInbox в YDB по alias │ 3. Subject → title, plain-body → message ▼ INSERT messages + push в WebSocket │ ▼ Все ваши клиенты получают уведомление- Маршрутизация — по subaddress-части
+aliasв локальной части адреса (postmaster+abc123@your-mail.yandexcloud.net) или по выделенному домену. - Хранение — таблица
email_inboxesв YDB с уникальным индексом поalias. - Push — то же самое, что у обычного
POST /message: моментальный фрейм по WebSocket плюс запись в БД для последующихGET /message.
Создание ящика
Заголовок раздела «Создание ящика»Через админку
Заголовок раздела «Через админку»- Откройте app.notifly.ru → Email Inbox.
- Нажмите «Создать ящик», заполните:
- Название — для отображения, например «Алёрты Reg.ru».
- Канал — куда складывать пришедшие письма как уведомления.
- В таблице появится сгенерированный email-адрес — это и есть аутентификация. Скопируйте его в настройки внешнего сервиса.
Через REST API
Заголовок раздела «Через REST API»curl -X POST "$NOTIFLY_URL/email-inbox" \ -H "Content-Type: application/json" \ -H "X-Gotify-Key: <client-token>" \ -d '{ "name": "Алёрты Reg.ru", "appId": 12345 }'В ответе придёт сам объект ящика с заполненным emailAddress:
{ "id": 17, "appId": 12345, "appName": "Operations", "name": "Алёрты Reg.ru", "alias": "a3f9c2", "emailAddress": "postmaster+a3f9c2@your-mail.yandexcloud.net", "created": "2026-04-30T10:11:12Z", "lastUsed": null}Через MCP (для AI-ассистента)
Заголовок раздела «Через MCP (для AI-ассистента)»Если у вас настроен MCP-сервер Notifly, просто попросите:
Создай Email Inbox для канала «Operations» с названием «Алёрты Reg.ru» и пришли мне получившийся адрес.
Использование
Заголовок раздела «Использование»Любой SMTP-клиент шлёт письмо на полученный адрес — никаких заголовков
авторизации не нужно (alias сам и есть секрет). Самый минимальный пример:
# msmtp / mailxecho "База за ночь не обновилась — проверьте репликацию." \ | mail -s "[ALERT] backups: lag > 24h" \ "postmaster+a3f9c2@your-mail.yandexcloud.net"Из Python:
import smtplibfrom email.message import EmailMessage
msg = EmailMessage()msg["To"] = "postmaster+a3f9c2@your-mail.yandexcloud.net"msg["From"] = "alerts@example.com"msg["Subject"] = "[ALERT] backups: lag > 24h"msg.set_content("База за ночь не обновилась — проверьте репликацию.")
with smtplib.SMTP("smtp.example.com", 587) as s: s.starttls() s.login("user", "pass") s.send_message(msg)Что попадёт в уведомление
Заголовок раздела «Что попадёт в уведомление»| Поле уведомления | Откуда берётся |
|---|---|
title | Заголовок письма (Subject:) |
message | Текстовое тело письма (text/plain-часть) |
priority | Приоритет канала по умолчанию |
date | Время прихода письма в Cloud Function |
HTML-часть, если есть, отбрасывается: уведомление — это короткий plain-text.
Если письмо чисто HTML, в текст уйдёт текстовая ветка multipart/alternative,
если она есть, иначе — пустая строка.
REST API
Заголовок раздела «REST API»| Метод и путь | Авторизация | Назначение |
|---|---|---|
GET /email-inbox | client-token | список ящиков |
POST /email-inbox | client-token (write) | создание |
PUT /email-inbox/:id | client-token (write) | переименовать / сменить канал |
DELETE /email-inbox/:id | client-token (write) | удалить |
POST принимает EmailInboxParams — {name, appId}.
В ответе всегда возвращается полный объект EmailInbox, включая публичный
emailAddress (его удобно сразу копировать в настройки внешней системы).
Ограничения
Заголовок раздела «Ограничения»- Только plain-text — HTML-вёрстка пропускается, аттачменты не сохраняются.
- Размер письма — в пределах лимитов Yandex Cloud Mail Trigger.
- Адрес чувствителен к регистру
alias(хранитсяlower-case). - При высокой нагрузке (>1 письма/сек на ящик) уведомления будут приходить пачками — Cloud Function масштабируется, но Notifly не дедуплицирует уведомления автоматически.