Диагностика и решение проблемы неотправки писем из WooCommerce через SMTP

Почему письма WooCommerce не отправляются через SMTP?

Часто в WooCommerce возникают проблемы с отправкой писем, особенно если используется SMTP-сервер. Основные причины:

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

Как диагностировать проблему с отправкой писем WooCommerce

1. Проверка логов SMTP

Установите плагин WP Mail Logging или аналогичный, чтобы отслеживать попытки отправки писем. Это позволит увидеть, уходят ли письма из WordPress, и какие ошибки возвращает SMTP-сервер.

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

Используйте следующий код в файле functions.php вашей темы или в плагине для теста отправки письма:

add_action('wp_loaded', function() {
    if (isset($_GET['test_smtp'])) {
        $to = 'your_email@example.com';
        $subject = 'Тест SMTP WooCommerce';
        $message = 'Проверка отправки письма через SMTP';
        $headers = ['Content-Type: text/html; charset=UTF-8'];
        $sent = wp_mail($to, $subject, $message, $headers);
        if ($sent) {
            echo 'Письмо отправлено успешно';
        } else {
            echo 'Ошибка отправки письма';
        }
        exit;
    }
});

Перейдите по URL https://your-site.com/?test_smtp и проверьте результат.

3. Проверка настроек SMTP через плагин

Для управления SMTP рекомендуется использовать проверенный плагин, например, Clearfy Pro или WP Mail SMTP. Проверьте, что:

  • Адрес SMTP-сервера введён корректно;
  • Порт и тип шифрования (SSL/TLS) соответствуют требованиям почтового сервиса;
  • Логин и пароль верны;
  • Отправитель совпадает с разрешённым адресом (часто это обязательно).

Пошаговое решение проблемы неотправки писем WooCommerce через SMTP

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

  1. Установите и активируйте плагин WP Mail SMTP.
  2. Перейдите в Настройки → WP Mail SMTP.
  3. Выберите SMTP как метод отправки.
  4. Заполните поля:
    • SMTP Host (например, smtp.gmail.com);
    • SMTP Port (465 для SSL или 587 для TLS);
    • Encryption: SSL или TLS;
    • Authentication: включить и указать логин и пароль;
    • From Email: адрес отправителя;
    • From Name: имя отправителя.
  5. Сохраните настройки и отправьте тестовое письмо из настроек плагина.

Шаг 2. Убедитесь, что WooCommerce использует wp_mail

WooCommerce по умолчанию использует wp_mail. Если в теме или плагинах есть переопределения функции, они могут мешать отправке. Проверьте, нет ли в functions.php или в плагинах переопределений wp_mail.

Шаг 3. Проверка конфликтов плагинов

Отключите все плагины, кроме WooCommerce и SMTP, и проверьте отправку письма. Если проблема исчезла, включайте плагины по одному, чтобы выявить конфликтующий.

Шаг 4. Проверка ограничений хостинга

Свяжитесь с поддержкой хостинга и уточните, разрешена ли отправка почты через SMTP с вашего сайта. Некоторые хостинги блокируют исходящие SMTP-соединения на стандартных портах.

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

  • Отправьте тестовое письмо через настройки SMTP-плагина;
  • Создайте тестовый заказ WooCommerce и проверьте, приходит ли уведомление;
  • Проверьте логи SMTP и логи WordPress на предмет ошибок;
  • Если письмо не приходит, проверьте папку «Спам»;
  • Используйте команду wp mail log или аналог для проверки записей отправки.

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

  • Неверный порт или шифрование. Часто SMTP-сервер требует TLS, а указан SSL или наоборот. Проверьте требования почтового сервиса.
  • Неправильный логин/пароль. Попробуйте вручную войти в почтовый аккаунт, чтобы проверить данные.
  • Отправитель не совпадает с авторизованным адресом. Некоторые SMTP-серверы не принимают письма с другого From Email.
  • Конфликты плагинов почты. Отключайте лишние плагины, влияющие на почту.
  • Хостинг блокирует исходящие SMTP-порты. Уточните в техподдержке и используйте альтернативные порты или API почтовых сервисов.
  • Отсутствие SSL-расширений PHP. Проверьте, что на сервере включён модуль OpenSSL.

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

  • Используйте SMTP-сервисы с поддержкой OAuth2 для Gmail и подобных (WP Mail SMTP Pro поддерживает это). Это повышает безопасность, не храня пароль в открытом виде.
  • Ограничьте количество отправляемых уведомлений, чтобы избежать блокировок SMTP-сервера.
  • Настройте DKIM, SPF и DMARC записи DNS для своего домена, чтобы снизить вероятность попадания писем в спам.
  • Логируйте почту только при диагностике, в продакшене отключайте логи, чтобы не перегружать БД.

Сравнение вариантов настройки SMTP для WooCommerce

МетодПлюсыМинусыПример использования
Плагин WP Mail SMTPПростая настройка, поддержка популярных SMTP-сервисовМожет конфликтовать с другими плагинами, платные функцииНастройки через UI, тестовая отправка
Ручная настройка wp_mail с PHPMailerМаксимальный контроль, можно кастомизироватьСложнее в настройке, требует навыков PHP
add_action('phpmailer_init', function($phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.gmail.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'user@gmail.com';
    $phpmailer->Password = 'password';
    $phpmailer->SMTPSecure = 'tls';
});
Использование внешних сервисов API (SendGrid, Mailgun)Высокая доставляемость, аналитика, масштабируемостьТребует регистрации и оплаты, интеграция через плагины или кодПлагины или HTTP-запросы API

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как отключить дубли архивов в WordPress и не сломать индексацию
13.09.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее
Warning: Trying to access array offset on value of type null in /home/s/serkae7j/wpshop.ru/public_html/tools/widget/event.php on line 399 Warning: Trying to access array offset on value of type null in /home/s/serkae7j/wpshop.ru/public_html/tools/widget/event.php on line 400