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

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

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

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

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

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

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

Часті запитання

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1320
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1015
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Листи, відправлені з сайту, потрапляють до спаму? Клієнти не отримують сповіщення про замовлення? Знайома ситуація. Найчастіше причина — неправильне налаштування 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, зв'яжіться з нами — ми допоможемо. Оцінимо проєкт безкоштовно.