# Письма 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/ru/kb/wordpress-woocommerce/).

Вторая частая причина — хостинг блокирует исходящий порт 25, чтобы сервер не использовали для рассылки спама. В этом случае `mail()` вернёт «письмо отправлено», хотя на самом деле сообщение никуда не ушло.

## Как проверить, что именно ломает отправку

Установите плагин WP Mail SMTP или Check Email — сделать это можно и одной командой через терминал, без захода в админку, как описано в статье [WP-CLI: управление WordPress из командной строки](https://www.zevshost.net/ru/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/ru/kb/wordpress-bezopasnost/).

## Чек-лист настройки почты WordPress

Перед тем как закрывать задачу, проверьте:

- Плагин WP Mail SMTP или хук `phpmailer_init` подключён и настроен.
- Используется порт 587 с TLS или 465 с SSL, а не порт 25.
- Тестовое письмо получено, а не только показано «отправлено» в WordPress.
- В DNS домена добавлены записи SPF и DKIM.
- Пароль почтового ящика не хранится открытым текстом в коде темы.

---

Источник: https://www.zevshost.net/ru/kb/wordpress-smtp-pisma/
