Legan Studio
Все статьи
~ 6 мин чтения

Транзакционная почта: SES vs Mailgun vs Unisender

Сравниваем сервисы транзакционной почты для проекта в РФ: доставляемость, цены, SPF/DKIM/DMARC, шаблоны и обход санкционных ограничений.

  • веб
  • интеграции
  • разработка

Транзакционные письма — это «подтвердите email», «ваш заказ оформлен», «сброс пароля», «инвойс на оплату». Доставляться они должны почти со 100% надёжностью и быстро (секунды, не минуты). Свой SMTP-сервер на VPS — путь в спам-фолдер за неделю. Нужен специализированный сервис.

В 2026 для проектов в России выбор сильно сузился — разбираем, что реально работает.

Что такое транзакционная почта

Не путать с маркетинговыми рассылками:

ТипТранзакционнаяМаркетинговая
Когда отправляетсяпо событию пользователяпо расписанию
Получательодин конкретныйсегмент / база
Согласиевытекает из действия (заказ, регистрация)явный opt-in
Объёмот 100 до миллионов /деньпакетами
СервисPostmark, SES, SendGridMailchimp, Unisender Pro

Мы говорим про первое — серверные триггерные письма от вашего приложения.

Почему не свой SMTP

Технически — пожалуйста. На практике:

  • Ваш VPS-IP не имеет «репутации». Gmail/Mail.ru сразу шлёт в спам.
  • Нужно настраивать SPF, DKIM, DMARC, обратные DNS, IP warmup.
  • Нет дашборда: не видите, доставилось или нет.
  • Один спам-репорт от пользователя — IP в blacklist.
  • Проблемы с TLS, сертификатами, очередью при сбоях.

Через час такой работы понимаете: $20-50/мес за специализированный сервис того стоят.

Сравнение сервисов

СервисРоссийскийЦена за 100k писемДоставляемость в РФAPI
Amazon SESнет$10средняя (часть IP в блоке Mail.ru)хорошее
Mailgunнет$35хорошаяотличное
SendGridнет$50-90хорошаяхорошее
Postmarkнет$50отличнаяотличное
Resendнет$20отличная (для не-РФ)топ
Unisender Goда (РФ)~600 ₽отличная для РФхорошее
SendPulseда (Беларусь)~500 ₽хорошаяхорошее
Yandex 360 SMTPдабесплатно до 200/деньхорошая для Yandex.ruбазовое

Для российских адресов почты (yandex.ru, mail.ru, rambler.ru) лучше всего работают российские сервисы — они аккредитованы Mail.ru Group и Яндексом.

Unisender Go (раньше — UniOne)

Российский сервис, специализируется на транзакционных письмах. Поддерживает SMTP и REST API.

const res = await fetch("https://go1.unisender.ru/ru/transactional/api/v1/email/send.json", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-API-KEY": process.env.UNISENDER_API_KEY!,
  },
  body: JSON.stringify({
    message: {
      from_email: "noreply@example.ru",
      from_name: "Магазин",
      subject: "Заказ #1234 оформлен",
      body: { html: "<h1>Спасибо!</h1>" },
      recipients: [{ email: user.email, substitutions: { name: user.name } }],
    },
  }),
});

Цена: 0.07-0.10 ₽ за письмо для небольших объёмов. Дашборд с метриками доставляемости, открываемости, отписок.

Amazon SES

Дешевле всех — $0.10 за 1000 писем. Но:

  1. Для прода нужен выход из sandbox (запрос в саппорт).
  2. Российские провайдеры иногда блокируют целые AWS-IP-диапазоны.
  3. Биллинг — иностранная карта.

В 2026 SES работает технически, но оплата для российской компании сложна. Если у вас аккаунт в зарубежной юрисдикции — отличный выбор.

import { SES } from "@aws-sdk/client-ses";
const ses = new SES({ region: "eu-central-1" });

await ses.sendEmail({
  Source: "noreply@example.com",
  Destination: { ToAddresses: ["user@example.com"] },
  Message: {
    Subject: { Data: "Hello" },
    Body: { Html: { Data: "<p>Hi!</p>" } },
  },
});

Yandex 360 для бизнеса

Если у вас домен на Yandex Connect, можно слать через Yandex SMTP. Бесплатно до 200 писем в сутки на ящик. Подходит для маленьких сайтов с десятком уведомлений в день — заявки с лендинга, восстановление пароля.

SMTP_HOST=smtp.yandex.ru
SMTP_PORT=465
SMTP_USER=noreply@example.ru
SMTP_PASS=app-password

Через nodemailer:

import nodemailer from "nodemailer";
const t = nodemailer.createTransport({
  host: "smtp.yandex.ru",
  port: 465,
  secure: true,
  auth: { user, pass },
});
await t.sendMail({ from: user, to, subject, html });

SPF, DKIM, DMARC

Без этих DNS-записей письма уходят в спам.

SPF — TXT-запись на корневом домене:

v=spf1 include:_spf.unisender.ru include:_spf.yandex.net -all

DKIM — публичный ключ подписи. Сервис даёт вам строку, кладёте в DNS:

selector1._domainkey.example.ru TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA...

DMARC — политика, что делать с письмами, не прошедшими SPF/DKIM:

_dmarc.example.ru TXT v=DMARC1; p=quarantine; rua=mailto:dmarc@example.ru

Без всех трёх Mail.ru шлёт ваши письма в спам с большой вероятностью. Проверка: mail-tester.com — отправляете тестовое письмо, получаете оценку 0-10. Цельтесь в 9-10.

Шаблоны

Не лепите HTML строкой в коде. Варианты:

  • MJML — простой DSL, компилируется в кросс-клиентский HTML.
  • react-email — компоненты на React, рендеринг в HTML.
  • Maizzle — Tailwind для писем.
// react-email
import { Html, Button } from "@react-email/components";

export function OrderConfirmed({ orderId, total }) {
  return (
    <Html>
      <h1>Заказ #{orderId}</h1>
      <p>На сумму {total} ₽</p>
      <Button href={`https://example.ru/orders/${orderId}`}>Открыть заказ</Button>
    </Html>
  );
}
import { render } from "@react-email/render";
const html = render(<OrderConfirmed orderId={1234} total={5990} />);
await sendEmail({ to, subject: "Заказ оформлен", html });

Тестируйте в десятке клиентов — Gmail, Mail.ru, Yandex Mail, Outlook, мобильные. Письма часто отображаются по-разному — особенно Outlook с его старым Word-движком.

Очередь и retry

Никогда не шлите email прямо из HTTP-обработчика — это блокирует ответ пользователю и ломает UX, если SMTP лежит. Кладите задачу в очередь:

// после оформления заказа
await emailQueue.add("order.confirmed", { orderId, userId });
return Response.json({ ok: true });

// worker
emailQueue.process("order.confirmed", async (job) => {
  const { orderId, userId } = job.data;
  const user = await db.user.findUnique({ where: { id: userId } });
  await sendEmail({ to: user.email, /* ... */ });
});

BullMQ + Redis или RabbitMQ. Retry 3-5 раз с экспоненциальной задержкой при сбоях. Метрика — время от события до доставки (норма — секунды, не минуты).

Метрики

Отслеживайте на стороне сервиса (или в Sentry/Mixpanel):

  • Delivered % — доставлено
  • Bounced % — адрес не существует или почтовый ящик заблокирован
  • Spam complaints — пользователь нажал «спам»
  • Open rate — открыли (только если включён tracking pixel)
  • Click rate — кликнули по ссылке

Bounce > 5% — у вас грязная база, чистите. Spam > 0.1% — вас скоро заблокирует провайдер.

152-ФЗ для рассылок

Транзакционная почта по событию пользователя — согласие подразумевается (он сам зарегистрировался / оформил заказ). Маркетинговая — отдельный явный чекбокс «согласен на рекламные рассылки», и обязательная ссылка «отписаться» в каждом письме.

Хранить базу адресов и логи отправки в РФ — требование 152-ФЗ для российских пользователей. Поэтому Unisender Go или Yandex 360 здесь предпочтительнее, чем SES в Frankfurt.

Итого

Для российского проекта в 2026 — Unisender Go или SendPulse как основной сервис, плюс Yandex 360 для маленьких объёмов. Зарубежные сервисы (Postmark, Resend) — отлично, но платежи сложны. Своими силами SMTP — не вариант никогда, кроме как для внутренних уведомлений в команду.

Частые вопросы

Сколько стоит транзакционная почта для среднего сайта?

Если шлёте 5000-20000 писем в месяц (типичный e-commerce средней руки) — Unisender Go от 500 до 1500 ₽/мес. Yandex 360 до 200 писем/день бесплатно — для лендинга или малого SaaS хватает. Postmark — $15-50 за тот же объём, но платежи проблематичны.

Можно ли в 2026 использовать SendGrid из России?

Технически API работает, но оплата с российской карты невозможна. Если есть зарубежный аккаунт и оплата — пожалуйста. Для нового российского проекта — нерабочий вариант, в любой момент аккаунт могут заблокировать без возврата денег.

Как улучшить доставляемость, если 30% писем уходят в спам?

Чек-лист: 1) SPF, DKIM, DMARC настроены и проходят (mail-tester.com → 9-10 баллов). 2) Отправитель — корпоративный адрес на вашем домене, не gmail или yandex. 3) Текст без подозрительных слов (всё каплосом, бесплатно, заработать). 4) В письме есть текстовая версия, не только HTML. 5) Ссылка «отписаться» в подвале. 6) IP репутация прогрета (для своего SMTP — постепенный рост объёма).

Что если пользователь сразу нажимает спам?

Один-два — не проблема. Но если их доля > 0.1% от рассылки, провайдер начнёт резать вашу доставку. У всех нормальных сервисов есть webhook на feedback loop — приходит уведомление «такой-то нажал спам», и вы автоматически удаляете адрес из базы. Не реагировать — путь к блокировке.

React Email или MJML для шаблонов?

React Email — если стек уже React, удобно работать с props и переиспользовать компоненты. MJML — стандарт индустрии, лучше документация, есть наследование шаблонов, проще передать дизайнеру. Оба генерят кросс-клиентский HTML, оба работают. Если команда — React-разработчики, берите react-email.

Хранить ли тело отправленного письма у себя?

Минимум — log с from/to/subject/timestamp/status для аудита и поддержки. Полное тело — обычно не нужно, его хранит сервис. Если письмо содержит юридически значимый контент (счёт, договор) — да, обязательно архивируйте у себя в S3/Object Storage с TTL по требованиям бухгалтерии.

Что делать с временными адресами почты (10minutemail.com и пр.)?

Блокировать на регистрации — есть готовые списки доменов. Для лидов с лендинга — обычно нет смысла, всё равно конверсия мала. Для SaaS-продукта с триалом — однозначно блокировать, иначе один пользователь регистрирует 50 триалов на разные одноразовые адреса.