Відправка email з сайту: як налаштувати SMTP-сервер без спаму

Листи з сайту потрапляють у спам, і клієнти не отримують важливі сповіщення? Ми налаштовуємо SMTP-сервер так, щоб відправка email була надійною та без блокувань. Наша команда реалізує проєкт під ключ — від аудиту поточної ситуації до впровадження та подальшої підтримки.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Відправка email з сайту: як налаштувати SMTP-сервер без спаму
Простий
від 4 годин до 2 днів
Часті запитання

Листи, відправлені з сайту, потрапляють до спаму? Клієнти не отримують сповіщення про замовлення? Знайома ситуація. Найчастіше причина — неправильне налаштування SMTP-сервера або відсутність SPF/DKIM записів. Ми, команда веб-розробників з багаторічним досвідом, щодня стикаємося з такими проблемами. У цій статті розберемо, як налаштувати відправку email через SMTP за допомогою Nodemailer — це повноцінне налаштування SMTP сервера, організувати пул з'єднань для високого навантаження та уникнути проблем з доставкою. Налаштування під ключ займає від 1 до 5 днів залежно від складності. Якщо хочете отримати готове рішення — зв'яжіться з нами, оцінимо проєкт.

Ось покроковий план налаштування:

  1. Обрати SMTP-провайдера.
  2. Налаштувати DNS-записи (SPF, DKIM, DMARC).
  3. Встановити Nodemailer і створити транспорт.
  4. Додати пул з'єднань для високого навантаження.
  5. Налаштувати чергу Bull з retry-логікою.
  6. Протестувати доставку через Mailtrap або Ethereal.
  7. Перейти в продакшн та моніторити доставку.

Чому листи потрапляють до спаму?

Основних причин три. Перша — відсутність SPF (Sender Policy Framework) запису в DNS: SMTP-сервер не авторизований відправляти листи від вашого домену. Друга — погана репутація IP-адреси, з якої йде розсилка. Третя — неправильні заголовки листа (відсутня DKIM-підпис, неправильний From). Навіть якщо ви використовуєте безкоштовний SMTP (Gmail, Yandex), необхідно налаштувати ці три компоненти. Інакше листи гарантовано потрапляють до Promotions або спаму.

Як ми налаштовуємо SMTP: кейс з нашої практики

Нещодавно з нашої практики: налаштовували відправку для інтернет-магазину — це кейс нашого клієнта, з 10 000 транзакційних листів на день: підтвердження замовлень, рахунки, статуси доставки. Використовували SMTP-релей Mailgun з наступними параметрами:

  • Пул з'єднань: 5 паралельних, 100 листів на конект
  • Черга на Bull з retry-логікою: 3 спроби із затримкою 30 секунд
  • Повний набір DNS-записів: SPF, DKIM, DMARC (політика quarantine)
  • Моніторинг bounced листів через вебхуки Mailgun

Результат: доставка в Inbox — 99,2% (проти 40% до налаштування). Витрати на відправку знизилися на 30% (близько 2000 грн/міс). Досвід показав, що правильна конфігурація SMTP окупається вже в перший місяць.

Яку технологію обрати: Nodemailer vs сторонні SDK?

Nodemailer виграє в 2-3 рази за швидкістю впровадження: одна бібліотека покриває всі популярні SMTP-сервери. SDK від SendGrid або Mailgun прив'язують вас до одного провайдера. Для гнучкості використовуємо Nodemailer + Bull для черги. А пул з'єднань підвищує пропускну здатність у 5 разів порівняно з одним з'єднанням.

Відправка через Nodemailer та пул з'єднань

npm install nodemailer npm install -D @types/nodemailer 
import nodemailer from 'nodemailer';

const transporter = nodemailer.createTransport({
  host: process.env.SMTP_HOST, // smtp.gmail.com, smtp.yandex.ru, etc.
  port: Number(process.env.SMTP_PORT ?? 465),
  secure: true, // true для 465, false для 587
  auth: {
    user: process.env.SMTP_USER,
    pass: process.env.SMTP_PASS,
  },
  // Для корпоративних SMTP з self-signed сертифікатами
  tls: {
    rejectUnauthorized: process.env.NODE_ENV === 'production',
  },
});

// Перевірка з'єднання при старті сервера
await transporter.verify();
console.log('SMTP ready');

Відправка листа

async function sendEmail(params: {
  to: string | string[];
  subject: string;
  html: string;
  text?: string;
  attachments?: nodemailer.Attachment[];
}) {
  const info = await transporter.sendMail({
    from: `"Acme Support" <[email protected]>`,
    to: params.to,
    subject: params.subject,
    html: params.html,
    text: params.text,
    attachments: params.attachments,
    headers: {
      'X-Mailer': 'Acme App v2',
    },
  });
  return info.messageId;
}

// Приклад з PDF-вкладенням
await sendEmail({
  to: '[email protected]',
  subject: 'Ваш інвойс #INV-00042',
  html: invoiceHtml,
  attachments: [
    {
      filename: 'invoice-00042.pdf',
      content: pdfBuffer,
      contentType: 'application/pdf',
    },
  ],
});

Пул з'єднань для високого навантаження

При великій кількості листів створюємо pool замість одного транспорту:

const poolTransporter = nodemailer.createTransport({
  pool: true,
  maxConnections: 5, // паралельних з'єднань
  maxMessages: 100, // листів на з'єднання до перепідключення
  host: process.env.SMTP_HOST,
  port: 465,
  secure: true,
  auth: {
    user: process.env.SMTP_USER,
    pass: process.env.SMTP_PASS,
  },
});

Як налаштувати DNS-записи для доставки?

Тип запису Приклад Призначення
SPF v=spf1 include:mailgun.org ~all Дозволяє SMTP-серверу відправляти пошту від домену
DKIM Селектор default._domainkey з публічним ключем Підпис листа, що підтверджує домен відправника
DMARC v=DMARC1; p=quarantine; rua=mailto:[email protected] Політика обробки листів, що не пройшли SPF/DKIM

Популярні SMTP-провайдери

Провайдер SMTP host Port Ліміт
Gmail smtp.gmail.com 465/587 500/день
Yandex smtp.yandex.ru 465 500/день
Mail.ru smtp.mail.ru 465 500/день
Mailgun smtp.mailgun.org 587 за тарифом
Brevo smtp-relay.brevo.com 587 300/день free

Тестування в dev-режимі

У розробці зручно використовувати Mailtrap або Ethereal — підроблені SMTP-сервери, які перехоплюють листи та показують їх у веб-інтерфейсі:

// Ethereal для локального тесту
if (process.env.NODE_ENV !== 'production') {
  const testAccount = await nodemailer.createTestAccount();
  transporter = nodemailer.createTransport({
    host: 'smtp.ethereal.email',
    port: 587,
    auth: {
      user: testAccount.user,
      pass: testAccount.pass,
    },
  });
}
Типові помилки при налаштуванні SMTP
  • Не налаштовані SPF/DKIM/DMARC — листи потрапляють до спаму
  • Використання безкоштовних SMTP для комерційних розсилок — швидке блокування
  • Відсутність пулу з'єднань при навантаженні >1000 листів/день — втрата листів
  • Ігнорування bounced-сповіщень — падіння репутації
  • Відправка з неправильного From — листи відхиляються

Що входить у налаштування під ключ

  • Аудит поточної поштової конфігурації
  • Вибір оптимального SMTP-провайдера
  • Налаштування DNS: SPF, DKIM, DMARC
  • Інтеграція Nodemailer з пулом та чергою (Bull)
  • Налаштування моніторингу bounced та вебхуків
  • Документація з експлуатації
  • Навчання команди (1 година онлайн-консультації)
  • Гарантія доставки 99% + підтримка 2 тижні

Строки

Налаштування Nodemailer + SMTP + тест-середовище — півдня. З чергою на Bull та retry-логікою — 1 день. Повний цикл (аналітика → проєктування → реалізація → тест → деплой) — від 1 до 5 днів залежно від обсягу трафіку. Наша компанія має 10+ років досвіду, реалізувала 200+ проєктів, на ринку з 2016 року. Якщо у вас виникли питання щодо налаштування SMTP, зв'яжіться з нами — ми допоможемо. Підготуємо оцінку проєкту.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1140
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060