Email-уведомления с сайта: SMTP, Resend, Postmark

Когда пользователь оставляет заявку, оформляет заказ или сбрасывает пароль — он ждёт письмо. Если оно не приходит или попадает в спам — вы теряете клиента. Разберём, как настроить надёжную отправку email с сайта: от базового SMTP до специализированных сервисов Resend и Postmark.

Почему обычный SMTP — плохая идея для продакшена

Встроенный sendmail или SMTP через Gmail/Яндекс работает на этапе разработки, но в продакшене вы столкнётесь с проблемами:

  • Лимиты отправки (Gmail — 500 писем/день, Яндекс — 500)
  • Письма попадают в спам без правильных DNS-записей
  • Нет аналитики: не видно, доставлено ли письмо, открыто ли оно
  • Блокировка аккаунта при подозрительной активности

Для транзакционных писем (заявки, заказы, подтверждения) используйте специализированные сервисы.

SPF, DKIM, DMARC — фундамент доставляемости

Без этих DNS-записей ваши письма будут попадать в спам. Настройте их до подключения любого сервиса.

SPF (Sender Policy Framework)

Указывает, какие серверы имеют право отправлять письма от вашего домена.

# DNS TXT-запись для домена example.com
# Разрешаем отправку через Resend и Google
v=spf1 include:_spf.resend.com include:_spf.google.com ~all

DKIM (DomainKeys Identified Mail)

Цифровая подпись письма. Сервис отправки (Resend, Postmark) генерирует ключ — вы добавляете его как DNS-запись.

# DNS TXT-запись (пример для Resend)
# Имя: resend._domainkey.example.com
# Значение: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUA...

DMARC (Domain-based Message Authentication)

Политика обработки писем, не прошедших SPF/DKIM проверку.

# DNS TXT-запись
# Имя: _dmarc.example.com
v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100

Значение p=quarantine отправляет подозрительные письма в спам. После проверки отчётов можно перейти на p=reject для полной блокировки поддельных писем.

Сравнение сервисов транзакционных email

Критерий SMTP (Яндекс/Gmail) Resend Postmark
Бесплатный лимит 500 писем/день 3 000 писем/мес 100 писем/мес
Стоимость Бесплатно $20/мес за 50К писем $15/мес за 10К писем
API Нет (только SMTP) REST API + SDK REST API + SDK
Доставляемость Средняя Высокая Очень высокая
Аналитика Нет Открытия, клики, bounce Открытия, клики, bounce, спам
Webhooks Нет Да Да
React Email Нет Встроенная поддержка Нет
Скорость доставки 1 – 30 секунд 1 – 3 секунды < 1 секунды

Цены актуальны на март 2026. Уточняйте на сайте сервиса.

Resend: отправка через API (Node.js)

Resend — современный сервис с отличным DX. Поддерживает React Email для вёрстки шаблонов.

npm install resend

// Node.js — отправка email через Resend
const { Resend } = require('resend');

const resend = new Resend(process.env.RESEND_API_KEY);

async function sendOrderConfirmation(to, orderData) {
  const { data, error } = await resend.emails.send({
    from: 'Your Company <orders@example.com>',
    to: [to],
    subject: `Заказ #${orderData.id} подтверждён`,
    html: `
      <h1>Спасибо за заказ!</h1>
      <p>Ваш заказ <strong>#${orderData.id}</strong> принят в работу.</p>
      <p>Сумма: ${orderData.amount.toLocaleString('ru-RU')} ₽</p>
      <p>Мы свяжемся с вами в течение рабочего дня.</p>
    `
  });

  if (error) {
    console.error('Ошибка отправки:', error);
    throw error;
  }

  return data;
}

Resend: отправка на Python

pip install resend

import resend
import os

resend.api_key = os.environ["RESEND_API_KEY"]

def send_notification(to: str, subject: str, html: str) -> dict:
    params = resend.Emails.SendParams(
        from_email="Your Company <notify@example.com>",
        to=[to],
        subject=subject,
        html=html,
    )
    email = resend.Emails.send(params)
    return email

Postmark: максимальная доставляемость

Postmark фокусируется исключительно на транзакционных письмах (не маркетинговых) и обеспечивает лучшую доставляемость в индустрии.

// Node.js — отправка через Postmark
const postmark = require('postmark');

const client = new postmark.ServerClient(process.env.POSTMARK_API_TOKEN);

async function sendEmail(to, subject, htmlBody) {
  const result = await client.sendEmail({
    From: 'notify@kalinkins.ru',
    To: to,
    Subject: subject,
    HtmlBody: htmlBody,
    MessageStream: 'outbound'
  });

  console.log(`Email отправлен: ${result.MessageID}`);
  return result;
}

// Шаблоны Postmark — удобнее, чем inline HTML
async function sendWithTemplate(to, templateAlias, templateData) {
  return client.sendEmailWithTemplate({
    From: 'notify@kalinkins.ru',
    To: to,
    TemplateAlias: templateAlias,
    TemplateModel: templateData,
    MessageStream: 'outbound'
  });
}

SMTP через Nodemailer (универсальный вариант)

Если нужна совместимость с любым SMTP-сервером:

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
  host: process.env.SMTP_HOST,     // smtp.yandex.ru
  port: 465,
  secure: true,
  auth: {
    user: process.env.SMTP_USER,   // your@yandex.ru
    pass: process.env.SMTP_PASS    // пароль приложения
  }
});

async function sendMail(to, subject, html) {
  const info = await transporter.sendMail({
    from: '"Your Company" <mail@example.com>',
    to,
    subject,
    html
  });

  console.log('Message sent:', info.messageId);
  return info;
}

Обработка ошибок и bounce

Неправильная обработка отказов (bounce) и жалоб (spam complaints) ведёт к падению репутации домена:

  • Hard bounce — адрес не существует. Удалите из базы сразу
  • Soft bounce — временная проблема (ящик переполнен). Повторите через несколько часов, после 3 неудач — удалите
  • Spam complaint — получатель нажал «Спам». Немедленно отпишите его

Resend и Postmark отправляют webhook-уведомления о bounce и complaints — обрабатывайте их автоматически.

Чек-лист перед запуском

  1. Настроены SPF, DKIM, DMARC записи в DNS
  2. Домен отправки подтверждён в сервисе (Resend/Postmark)
  3. Письма проверены через mail-tester.com (оценка 9+/10)
  4. Настроена обработка bounce и complaints
  5. Есть fallback: если основной сервис упал — письма уходят через резервный SMTP
  6. API-ключи в переменных окружения, не в коде
  7. Логирование отправок с messageId для отладки

Что выбрать

  • Resend — лучший DX, щедрый бесплатный тариф, React Email. Оптимально для новых проектов на Next.js/Node.js
  • Postmark — максимальная доставляемость и скорость. Для критичных уведомлений (оплата, безопасность)
  • SMTP (Яндекс) — для MVP и проектов с минимальным количеством писем (до 100/день)

Есть идея? Реализуем

Разрабатываем проекты, которые решают задачи бизнеса — от лендинга до сложного сервиса. Расскажите о своей задаче, подберём решение.

Написать в Telegram

30.03.2026

Нужна консультация?

Оставьте свои контактные данные, или свяжитесь с нами удобным для вас способом

Привет! Меня зовут Багира. Пишите, я все передам хозяевам!

Привет! Меня зовут Багира. Пишите, я все передам хозяевам!

Нажимая кнопку «Принять», вы соглашаетесь на сбор cookie. Мы используем их для обеспечения функционирования веб-сайта, аналитики действий и улучшения качества обслуживания. Если Вы не хотите, чтобы эти данные обрабатывались, отключите cookie в настройках браузера или прекратите использовать сайт.
Принять