К основному содержимому

Письма 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.
  • Пароль почтового ящика не хранится открытым текстом в коде темы.
← Назад в базу знаний Задать вопрос поддержке