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

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

Если на вашем сайте WordPress перестали отправляться письма (уведомления, письма восстановления пароля, оповещения WooCommerce), скорее всего проблема связана с настройками PHPMailer. WordPress использует библиотеку PHPMailer для отправки писем через функцию wp_mail(). Основные причины сбоев:

  • Не настроен SMTP-сервер или неправильные параметры;
  • Блокировка исходящей почты хостингом;
  • Проблемы с PHP mail() на сервере;
  • Ошибки в коде, переопределяющем wp_mail() или хуки;
  • Конфликты с плагинами безопасности или антиспамом.

Для начала проверьте логи ошибок сервера и активируйте отладку в WordPress, добавив в wp-config.php:

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

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

Пошаговое решение проблемы с PHPMailer и отправкой писем

1. Настройка SMTP через плагин WP Mail SMTP

Рекомендуется настроить отправку писем через SMTP-сервер, чтобы избежать проблем с mail(). Плагин Clearfy Pro имеет встроенную оптимизацию, но для SMTP используйте бесплатный WP Mail SMTP.

В настройках укажите:

  • SMTP-сервер (например, smtp.gmail.com для Gmail);
  • Порт (587 для TLS, 465 для SSL);
  • Авторизацию (логин и пароль от почты);
  • Тип шифрования TLS/SSL;
  • От кого (From Email) строго совпадает с почтой SMTP.

2. Проверка отправки почты с помощью тестовой функции

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

add_action('init', function() {
    if (isset($_GET['test_mail'])) {
        $sent = wp_mail('your_email@example.com', 'Тест отправки почты', 'Если вы получили это письмо, отправка работает');
        if ($sent) {
            wp_die('Письмо отправлено успешно');
        } else {
            wp_die('Ошибка при отправке письма');
        }
    }
});

После добавления перейдите по адресу https://your-site.ru/?test_mail=1 и проверьте, дошло ли письмо.

3. Принудительная инициализация PHPMailer с SMTP вручную

Если плагин не подходит, можно принудительно переопределить параметры PHPMailer. Добавьте в functions.php:

add_action('phpmailer_init', function($phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.gmail.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'your_email@gmail.com';
    $phpmailer->Password = 'your_app_password';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = 'your_email@gmail.com';
    $phpmailer->FromName = 'Ваш сайт';
});

Используйте пароль приложения, если у вас двухфакторная аутентификация Gmail.

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

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

  • Отправьте тестовое письмо через интерфейс или по URL с тестом;
  • Проверьте папку «Входящие» и «Спам» почты получателя;
  • Посмотрите лог ошибок wp-content/debug.log и логи сервера (например, error_log);
  • Проверьте, не блокирует ли хостинг исходящую почту (запросите у поддержки).

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

  • Ошибка «SMTP connect() failed» — неверные настройки SMTP, проверьте порт, хост, логин и пароль, попробуйте сменить шифрование.
  • Письма уходят в спам — настройте SPF, DKIM и DMARC для домена, чтобы повысить доверие почтовых сервисов.
  • Проблемы с двухфакторной аутентификацией Gmail — используйте пароль приложения, а не основной пароль.
  • Конфликт плагинов — отключите все плагины, кроме SMTP, и проверьте отправку.
  • PHP mail() отключен на сервере — переходите на SMTP или меняйте хостинг.

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

  • Используйте SMTP с шифрованием TLS/SSL для безопасности передачи почты.
  • Не храните пароли в открытом виде, используйте константы в wp-config.php.
  • Отключайте дебаг после тестирования, чтобы не раскрывать информацию.
  • Регулярно проверяйте логи и статистику отправки почты.
  • Для массовых рассылок используйте специализированные сервисы (Mailgun, SendGrid) с API вместо SMTP.

Сравнение вариантов настройки отправки почты в WordPress

ВариантПреимуществаНедостаткиРекомендации
PHP mail()Не требует настройки, по умолчаниюЧасто блокируется хостингом, высокая вероятность спамаИспользовать только на локальных тестах
SMTP через плагинНадежность, контроль, шифрованиеТребует настройки, возможны сбои при неправильных параметрахРекомендуется для всех живых сайтов
Прямое переопределение phpmailer_initГибкость, нет плагиновТребует навыков, сложнее поддерживатьИспользовать при кастомных решениях
Как исправить ошибку недоступности WooCommerce AJAX корзины после обновления
20.06.2026
Как использовать OmniVideo для автоматической вставки видео в WordPress
25.02.2026
Как создать автоматическое сохранение данных в WordPress
03.12.2025
Как создать автоматический импорт из XML в WordPress
02.04.2026
Как проверить и исправить проблемы с переадресацией в WordPress без плагинов
09.06.2026