Коротко: WordPress не отправляет письма: чаще всего отказ отправки вызван некорректной работой встроенной PHP-функции mail() на хостинге. Чтобы надёжно решить проблему, перейдите на SMTP-отправку через плагин WP Mail SMTP или Post SMTP, предварительно проверив спам-фильтры и логи ошибок сервера.
Когда сайт на WordPress не отправляет письма — не работают формы обратной связи, сброс пароля и уведомления Woocommerce — проблему можно диагностировать за несколько шагов. Чаще всего виновата серверная функция mail() или отсутствие правильной аутентификации. В этой статье собран проверенный чек-лист, который вернёт отправку почты в рабочее состояние без вызова разработчика.
Что понадобится
- Доступ к административной панели WordPress с правами администратора
- Доступ к логам сервера (через панель хостинга или FTP)
- Действующий почтовый ящик для получения тестовых писем
Как WordPress отправляет письма и почему это ломается
WordPress использует функцию wp_mail(), которая по умолчанию базируется на стандартной PHP-функции mail(). На выделенных серверах она может работать стабильно, но на большинстве виртуальных хостингов её либо отключают из-за спам-политики, либо настраивают некорректно. В результате письма даже не доходят до почтового ящика получателя, хотя внешне всё выглядит так, будто отправка прошла успешно.
Дополнительные сложности создают спам-фильтры, отсутствующие SPF- и DKIM-записи, а также конфликты с плагинами кеширования или безопасности. Поэтому диагностика должна идти от простого теста к системным проверкам — только так можно точно определить, в каком звене обрыв.
Шаг 1. Отправьте тестовое письмо
Самый быстрый способ понять, работает ли отправка в принципе — использовать плагин Check Email. Он не требует сложной настройки и сразу показывает ошибки на каждом этапе, включая проблемы с SSL, подключением к SMTP или некорректные заголовки.
Если письмо успешно уходит через плагин, но реальные уведомления сайта не доходят, ищите конфликт в коде темы или сторонних расширений. В обратном случае двигайтесь дальше по чек-листу.
- Установите и активируйте плагин Check Email через Плагины → Добавить новый.
- Перейдите в Инструменты → Check Email.
- Введите адрес электронной почты, на который хотите получить тестовое письмо, и нажмите «Отправить тестовое письмо».
- Дождитесь результата на экране и проверьте папку «Входящие» и «Спам» на указанном ящике.
Важно: Если плагин сообщает об ошибке, скопируйте ее текст — он пригодится для дальнейшей диагностики.
Шаг 2. Изучите логи сервера
Ошибки почтовых функций почти всегда фиксируются в журналах PHP. Найдите файл error_log в корне сайта или через панель хостинга (раздел «Логи», «Журнал ошибок»). Ищите записи, содержащие «mail()», «wp_mail», «Failed to connect», «SMTP connect() failed» или «Could not instantiate mail function».
Логи также могут указать на превышение лимита памяти, нехватку прав доступа или конфликт с плагинами. Если не находите файл error_log, активируйте режим отладки WordPress: добавьте в wp-config.php строки define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); — ошибки начнут записываться в /wp-content/debug.log.
- Панель хостинга cPanel → Менеджер файлов → error_log в корневой папке сайта (public_html).
- FTP-клиент: файл error_log в директории с WordPress.
- Раздел «Логи» в панели управления хостингом (логи ошибок PHP).
Шаг 3. Убедитесь, что PHP-функция mail() не отключена
Некоторые хостинг-провайдеры перестраховываются и добавляют mail() в список запрещенных функций (disable_functions). Проверить это можно несколькими способами: просмотреть вывод phpinfo() через плагин или создать небольшой PHP-файл с и поискать строку disable_functions.
Если mail() присутствует в этом списке, обратитесь в службу поддержки хостинга с просьбой ее активировать. В случае отказа единственный вариант — сразу переходить на SMTP-отправку, которая не зависит от данной функции.
- Установите и активируйте плагин WP phpinfo() и посмотрите раздел Core.
- Создайте файл info.php с содержимым , откройте его в браузере и найдите disable_functions.
- Если mail() отключена, свяжитесь с поддержкой хостинга или сразу настройте SMTP.
Шаг 4. Настройте SMTP-отправку как постоянное решение
SMTP-плагины заменяют стандартный механизм wp_mail() аутентифицированной отправкой через внешний почтовый сервер. Это радикально повышает доставляемость и позволяет обходить блокировки хостинга. Наиболее стабильные бесплатные решения — WP Mail SMTP и Post SMTP Mailer/Email Log.
Выберите вариант с простым мастером настройки. В качестве отправителя обязательно укажите реальный адрес на вашем домене (например, wordpress@example.com) — письма с произвольных ящиков часто отклоняются. Для Gmail потребуется пароль приложения, если включена двухфакторная аутентификация.
- Установите плагин WP Mail SMTP через Плагины → Добавить новый.
- Активируйте и перейдите в WP Mail SMTP → Настройки.
- Введите адрес отправителя (From Email) и имя отправителя (From Name) — желательно использовать ящик на вашем домене.
- Выберите почтовый сервис «Other SMTP» (или Gmail/SendGrid) и заполните параметры: хост (smtp.gmail.com), порт (587), шифрование (TLS), логин и пароль.
- Сохраните настройки и перейдите на вкладку «Тест письма», чтобы отправить проверочное сообщение.
- Убедитесь, что письмо пришло и не попало в спам.
Важно: Для Gmail обязательно используйте «Пароль приложения», сгенерированный в настройках аккаунта Google.
Шаг 5. Финальная проверка и типичные сложности
После настройки SMTP проведите контрольный тест форм на сайте: отправьте сообщение через контактную форму, запросите сброс пароля, создайте тестовый заказ в WooCommerce. Если какая-то из функций молчит, вероятная причина — кеширование старых заголовков или конфликт с конкретным плагином.
Также обратите внимание на лимиты отправки вашего почтового провайдера: бесплатные тарифы SendGrid или Gmail ограничивают число писем в сутки. При массовых рассылках рассмотрите использование транзакционных сервисов вроде Mailgun или Amazon SES.
- Проверьте все формы сайта, а не только тестовый инструмент.
- Загляните в журнал отправленных писем плагина (WP Mail SMTP → Email Log) — там будут видны все попытки и ошибки.
- Убедитесь, что адрес «От кого» везде совпадает с доменом и проходит SPF-аутентификацию.
Проверка результата
- Проверьте папку «Спам» и…
Проверить ошибку WordPress
Введите ошибку WordPress, PHP, плагина, темы, REST API или кратко опишите проблему сайта.