Как отладить проблему: не работает отправка писем через PHPMailer в WordPress

Диагностика проблемы с отправкой писем в WordPress

Отсутствие отправки писем — частая проблема, с которой сталкиваются разработчики и администраторы WordPress-сайтов. В основе WordPress лежит класс PHPMailer, который отвечает за отправку email через функцию wp_mail(). Если письма не отправляются, это может быть связано с рядом факторов: настройки сервера, ограничения хостинга, ошибки в коде, неправильная конфигурация SMTP или блокировка со стороны почтовых сервисов.

Первый шаг — проверить, действительно ли WordPress пытается отправить письмо. Для этого можно использовать плагин Debug Email или добавить временный код для логирования попыток отправки.

Проверка базовой отправки писем

Добавьте следующий код в functions.php вашей темы или в специальный плагин для отладки:

add_action('init', function() {
    if (isset($_GET['test_email'])) {
        $to = 'ваш_адрес@пример.ру';
        $subject = 'Тестовая отправка письма';
        $message = 'Если вы получили это письмо, отправка работает.';
        $headers = ['Content-Type: text/html; charset=UTF-8'];
        $sent = wp_mail($to, $subject, $message, $headers);
        if($sent) {
            echo 'Письмо успешно отправлено';
        } else {
            echo 'Ошибка при отправке письма';
        }
        exit;
    }
});

После добавления перейдите по адресу https://ваш-сайт/?test_email=1. Если вы получите сообщение «Письмо успешно отправлено», но письмо не приходит — проблема на стороне почтового сервера/приемника. Если «Ошибка при отправке письма» — проблема внутри WordPress или хостинга.

Пошаговое решение: настройка SMTP для надежной отправки писем

Использование стандартного mail() PHP часто дает сбои из-за ограничений хостинга или блокировок спама. Рекомендуется настроить отправку через SMTP-сервер с аутентификацией.

1. Установка и настройка плагина WP Mail SMTP

  • Установите плагин WP Mail SMTP.
  • Перейдите в настройки плагина и выберите SMTP как метод отправки.
  • Заполните поля SMTP-сервера, порт, шифрование, логин и пароль от вашей почты.
  • Рекомендуется использовать SMTP Google, Яндекс или другого надежного провайдера.

2. Тест отправки

В настройках плагина есть раздел для тестовой отправки письма. Укажите ваш email и отправьте тест.

3. Логирование ошибок

Чтобы отследить ошибки отправки, добавьте в wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

После попытки отправки письма смотрите файл wp-content/debug.log на предмет ошибок PHPMailer или SMTP.

Проверка результата после внедрения SMTP

После настройки SMTP и успешного теста:

  • Отправьте письмо через административные функции WordPress — восстановление пароля, уведомления и т.д.
  • Убедитесь, что письма доходят в папку «Входящие», а не в «Спам».
  • Проверьте логи сервера на ошибки отправки.

Частые ошибки и их исправление

  • Ошибка аутентификации SMTP: Проверьте правильность логина и пароля, а также настройки безопасности почтового сервера (например, двухфакторная аутентификация у Google требует создания пароля приложения).
  • Письма попадают в спам: Настройте SPF, DKIM и DMARC записи в DNS вашего домена.
  • Плагин конфликтует с темой или другим плагином: Отключите остальные плагины и смените тему на дефолтную для проверки.
  • Отсутствие отправки при использовании mail(): Многие хостинги блокируют стандартную функцию PHP для отправки почты. Используйте SMTP.

Практические советы по безопасности и производительности

  • Используйте отдельный почтовый ящик для отправки системных уведомлений.
  • Не храните SMTP-пароли в открытом виде, используйте переменные среды или защищенные плагины.
  • Отключайте отладку после устранения проблем, чтобы не раскрывать внутренние детали сайта.
  • Проверяйте нагрузку на сервер при массовой отправке писем — при необходимости используйте очереди или внешние сервисы (SendGrid, Mailgun).

Сравнение способов отправки писем в WordPress

МетодПреимуществаНедостаткиРекомендуемость
Стандартная функция mail()Простота, нет настроекЧасто блокируется хостингом, письма в спамДля тестов, не для продакшена
SMTP через плагин (WP Mail SMTP)Надежность, поддержка аутентификацииТребует настройки и учетных данныхРекомендуется для всех сайтов
Внешние SMTP сервисы (SendGrid, Mailgun)Высокая deliverability, масштабируемостьДополнительные сервисы, стоимостьДля больших проектов и массовой рассылки
Как автоматически удалять неиспользуемые медиа-файлы в WordPress
23.05.2026
Как использовать WP-Cron для масштабных задач в WordPress
30.05.2026
Оптимизация производительности WordPress при работе с большими базами данных
15.01.2026
Как отключить AJAX-подгрузку в WooCommerce без плагинов
27.05.2026
Автоматическое удаление старых черновиков в WordPress по расписанию
27.03.2026