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

> Листи WordPress не доходять через функцію mail(): налаштовуємо SMTP через плагін, розбираємо DKIM, SPF і перевірку доставки.

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

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

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

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

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

Встановіть плагін WP Mail SMTP або Check Email — зробити це можна й однією командою через термінал, без заходу в адмінку, як описано в статті [WP-CLI: керування WordPress з командного рядка](https://www.zevshost.net/uk/kb/wp-cli-commands/) — і надішліть тестовий лист через розділ перевірки в налаштуваннях плагіна. Плагін покаже код відповіді поштового сервера — за ним видно, чи відхилив сервер з'єднання, порт або авторизацію.

Перевірити порт 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. Надішліть тестовий лист через вбудовану перевірку плагіна.

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

| Порт | Шифрування | Коли застосовувати |
| --- | --- | --- |
| 587 | TLS (STARTTLS) | рекомендований варіант для більшості поштових серверів |
| 465 | SSL | коли провайдер вимагає шифрування одразу під час підключення |
| 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](https://www.zevshost.net/uk/kb/wordpress-bezopasnost/).

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

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

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

---

Джерело: https://www.zevshost.net/uk/kb/wordpress-smtp-pisma/
