До основного вмісту

Листи WordPress не доходять: налаштування SMTP

WordPress · 29.09.2026

Форма зворотного зв'язку надсилає лист, WordPress показує «Повідомлення надіслано», а лист у поштовій скриньці так і не з'являється. Причина майже завжди одна: стандартна функція PHP mail() не годиться для доставки пошти на бойовому сайті. Розбираємо, як підключити SMTP і чому це вирішує проблему.

Чому листи WordPress не доходять до адресата

За замовчуванням WordPress надсилає листи через функцію PHP mail(), яка передає повідомлення локальному поштовому агенту сервера без авторизації і без цифрового підпису. Поштові сервіси на кшталт Gmail і Outlook бачать лист без записів SPF, DKIM і DMARC для домену відправника і мовчки відправляють його у спам або відхиляють зовсім. Окремо страждають магазини на WooCommerce: листи з підтвердженням замовлення не доходять до покупця так само, як звичайні сповіщення — налаштування магазину описано в статті WooCommerce: налаштування інтернет-магазину на WordPress.

Друга поширена причина — хостинг блокує вихідний порт 25, щоб сервер не використовували для розсилки спаму. У цьому випадку mail() поверне «лист надіслано», хоча насправді повідомлення нікуди не пішло.

Як перевірити, що саме ламає відправку

Встановіть плагін WP Mail SMTP або Check Email — зробити це можна й однією командою через термінал, без заходу в адмінку, як описано в статті WP-CLI: керування WordPress з командного рядка — і надішліть тестовий лист через розділ перевірки в налаштуваннях плагіна. Плагін покаже код відповіді поштового сервера — за ним видно, чи відхилив сервер з'єднання, порт або авторизацію.

Перевірити порт 25 із сервера можна командою:

# Перевірити, чи відповідає порт 25 на вихідних з'єднаннях
telnet smtp.gmail.com 25

Коли з'єднання зависає і не відповідає — порт заблоковано на рівні мережі, і варто використовувати порт 587 або 465 із шифруванням.

Налаштування SMTP через плагін WP Mail SMTP

Найнадійніший спосіб — надсилати пошту через зовнішній SMTP-сервер: власну поштову скриньку на домені, Gmail, SendGrid або Mailgun. Налаштування через плагін WP Mail SMTP:

  1. Встановіть і активуйте плагін WP Mail SMTP.
  2. Виберіть поштового провайдера — наприклад, Other SMTP для власної пошти на домені.
  3. Вкажіть SMTP-хост, порт 587, шифрування TLS, логін і пароль поштової скриньки.
  4. Надішліть тестовий лист через вбудовану перевірку плагіна.

Таблиця типових параметрів підключення для різних портів:

ПортШифруванняКоли застосовувати
587TLS (STARTTLS)рекомендований варіант для більшості поштових серверів
465SSLколи провайдер вимагає шифрування одразу під час підключення
25без шифруванняне застосовувати для авторизованої відправки

Налаштування через wp-config.php без плагіна

Коли плагіни на сайті небажані, SMTP можна підключити через хук phpmailer_init у файлі теми або в окремому mu-плагіні:

add_action( 'phpmailer_init', function( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.example.com';
    $phpmailer->Port       = 587;
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Username   = 'noreply@example.com';
    $phpmailer->Password   = 'секрет-у-змінних-середовища';
    $phpmailer->SMTPSecure = 'tls';
} );

Пароль у коді — погана практика; зберігайте його у змінних середовища сервера, а не у файлі теми.

DKIM, SPF і репутація домену відправника

Навіть правильний SMTP не врятує, якщо у домену немає записів SPF і DKIM у DNS. SPF-запис повідомляє поштовим серверам, яким IP-адресам дозволено надсилати листи від імені домену, а DKIM додає цифровий підпис до кожного листа. Без цих записів листи з власної поштової скриньки на домені теж потраплятимуть у спам у частини отримувачів.

Додайте в зону DNS домену запис SPF виду v=spf1 include:example.com ~all і увімкніть DKIM у панелі керування поштою — зазвичай це робиться в ISPmanager 6 або cPanel однією галочкою в розділі поштових доменів. Пароль від поштової скриньки — такий самий секрет, як пароль від адмінки; загальний перелік заходів захисту сайту зібрано в статті Безпека WordPress: повний чеклист 2026.

Чек-лист налаштування пошти WordPress

Перед завершенням завдання перевірте:

  • Плагін WP Mail SMTP або хук phpmailer_init підключено і налаштовано.
  • Застосовується порт 587 з TLS або 465 з SSL, а не порт 25.
  • Тестовий лист отримано, а не лише показано «надіслано» у WordPress.
  • У DNS домену додано записи SPF і DKIM.
  • Пароль поштової скриньки не зберігається відкритим текстом у коді теми.
← Назад до бази знань Поставити питання підтримці