WooCommerce не работает отправка писем после обновления: диагностика и решение

Диагностика проблемы: почему WooCommerce перестал отправлять письма

После обновления WooCommerce или WordPress часто возникает ситуация, когда магазин перестает отправлять уведомления клиентам и администраторам. Это могут быть письма о новых заказах, смене статуса заказа, регистрациях и т.д. Основные причины:

  • Конфликт с новой версией WooCommerce или WordPress
  • Проблемы с SMTP-сервером или почтовыми настройками хостинга
  • Отключение стандартной функции wp_mail() или замена на сторонние SMTP-плагины
  • Ошибки в теме или плагинах, влияющие на почтовую отправку
  • Задержки или блокировки на стороне почтового сервера из-за спам-фильтров

Как проверить, что письма не отправляются

  • Создать тестовый заказ и проверить, приходит ли письмо клиенту и администратору
  • Посмотреть в WooCommerce > Статусы заказов, если письмо должно быть отправлено, но не пришло
  • Проверить логи сервера и логи почтового сервера, если доступен
  • Использовать плагины для логирования почты, например, WP Mail Logging для фиксации попыток отправки

Пошаговое решение: исправляем отправку писем в WooCommerce

1. Проверяем базовую отправку писем WordPress

Создайте файл mail-test.php в корне сайта с таким кодом:

<?php
$to = 'your-email@example.com';
$subject = 'Тест отправки почты';
$message = 'Это тестовое письмо от WordPress';
$headers = ['Content-Type: text/html; charset=UTF-8'];

if(wp_mail($to, $subject, $message, $headers)) {
    echo 'Письмо отправлено успешно';
} else {
    echo 'Ошибка отправки письма';
}
?>

Откройте этот файл в браузере. Если письмо не отправляется, проблема на уровне хостинга или WordPress.

2. Настройка SMTP для надежной отправки

Установите плагин WP Mail SMTP и настройте через SMTP вашего почтового сервиса (Gmail, Яндекс, SendGrid и др.). Это решит проблемы с блокировкой исходящей почты хостингом.

Пример базовой настройки для Gmail:

  • SMTP Host: smtp.gmail.com
  • SMTP Port: 465 (SSL) или 587 (TLS)
  • Authentication: включена
  • Username и пароль — ваши Google аккаунт

3. Проверяем шаблоны писем WooCommerce

Если письма отправляются, но содержимое отсутствует или шаблон сломан, проверьте, не переопределены ли шаблоны в wp-content/themes/your-theme/woocommerce/emails/. Попробуйте временно переключить тему на стандартную (например, Storefront) и проверить отправку.

4. Отключаем конфликтующие плагины

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

5. Принудительная отправка почты в коде

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

add_action('woocommerce_order_status_completed', 'send_custom_email_on_completed');
function send_custom_email_on_completed($order_id) {
    $order = wc_get_order($order_id);
    $to = $order->get_billing_email();
    $subject = 'Ваш заказ завершен';
    $message = 'Спасибо за покупку! Ваш заказ #' . $order_id . ' завершен.';
    wp_mail($to, $subject, $message);
}

Если это письмо приходит, значит функция wp_mail() работает.

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

  • Оформите тестовый заказ в магазине
  • Проверьте, приходит ли письмо на почту клиента и администратора
  • Используйте логи плагина WP Mail SMTP или WP Mail Logging для просмотра попыток отправки
  • Проверьте папку «Спам», если письма не отображаются во «Входящих»

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

  • Письма попадают в спам: Настройте SPF, DKIM и DMARC записи для вашего домена. Это проверяется через панель хостинга или DNS.
  • SMTP плагин не подключается: Проверьте правильность логина и пароля, используйте специальные пароли приложений (например, для Gmail).
  • Письма не отправляются после обновления WooCommerce: Проверьте, не изменились ли хуки, используемые плагинами для отправки почты. Обновите плагины и тему.
  • Тема переопределяет шаблоны писем некорректно: Временно переключитесь на стандартную тему WooCommerce и проверьте работоспособность.

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

  • Используйте SMTP с аутентификацией, избегайте стандартной mail() функции PHP для надежной доставки.
  • Регулярно обновляйте WooCommerce и плагины, чтобы избежать уязвимостей в почтовой системе.
  • Логируйте отправку почты, чтобы быстро выявлять сбои.
  • Используйте отдельный почтовый домен или субдомен для рассылок, чтобы не понижать репутацию основного домена.

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

МетодПреимуществаНедостатки
Стандартная wp_mail()Простота, без установки плагиновМожет блокироваться хостингом, письма в спам
SMTP через плагин (WP Mail SMTP)Надежная доставка, аутентификацияНужна настройка, возможны проблемы с паролями
Внешние сервисы (SendGrid, Mailgun)Высокая доставляемость, аналитикаТребуется регистрация и интеграция
Как автоматизировать запуск событий в WordPress с помощью CRON Schedule
02.04.2026
Как сделать автоматические отчёты в WordPress с помощью плагинов и кода
12.02.2026
WooCommerce: запрет создания новых заказов по предоплаченным товарам
30.04.2026
Как удалить пустые категории в WordPress с помощью кода
08.01.2026
Как проверить и использовать WP-Cron для автоматизации задач в WordPress
15.04.2026