WooCommerce: как исправить проблемы с отправкой писем при изменении статуса заказа

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

Если WooCommerce не отправляет уведомления покупателям при смене статуса заказа (например, «обработка», «выполнен», «отменён»), первым делом нужно определить источник проблемы. Возможные причины:

  • Некорректные настройки почты на сервере или в WordPress;
  • Конфликты с плагинами, особенно с SMTP, кэшированием или безопасностью;
  • Проблемы с шаблонами писем WooCommerce;
  • Ошибки в пользовательских фильтрах или хуках, связанных с отправкой писем;
  • Отсутствие или неправильная настройка SMTP для отправки писем.

Для диагностики включите логирование почты через WooCommerce: WooCommerce → Статус → Логи, выберите лог с пометкой «email» и проверьте ошибки.

Проверка отправки писем по умолчанию

Создайте тестовое письмо через стандартный PHP mail в WordPress, чтобы исключить проблемы с сервером:

wp_mail('you@example.com', 'Тестовое письмо', 'Если вы получили это письмо, отправка работает.');

Если письмо не приходит, нужно настраивать серверную почту или использовать SMTP.

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

1. Установка и настройка SMTP

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

  1. Перейдите в Настройки → WP Mail SMTP;
  2. Выберите почтовый сервис (SMTP-сервер вашего хостинга, Gmail, Mailgun и др.);
  3. Введите данные SMTP: хост, порт, логин, пароль;
  4. Сохраните настройки и отправьте тестовое письмо из панели плагина.

2. Проверка и восстановление шаблонов писем WooCommerce

Если шаблоны были изменены, возможно, они вызывают сбой отправки. Для проверки:

  1. Перейдите в WooCommerce → Статус → Шаблоны;
  2. Сравните кастомные шаблоны с дефолтными;
  3. Попробуйте временно переименовать папку кастомных шаблонов woocommerce/emails в вашей теме;
  4. Проверьте, отправляются ли письма с дефолтными шаблонами.

3. Отключение конфликтующих плагинов

Временно деактивируйте плагины, которые могут влиять на отправку почты: кеширование (например, WP Super Cache), безопасность (WordFence), плагин SMTP (если установлен более одного).

4. Проверка пользовательских хуков, влияющих на email

Поищите в functions.php или плагинах фильтры и действия, которые изменяют поведение почты, например:

add_filter( 'woocommerce_email_enabled_customer_completed_order', '__return_false' );

Если найдёте что-то похожее, временно отключите этот код.

Как проверить, что проблема решена

После внесения изменений:

  • Создайте тестовый заказ в WooCommerce;
  • Измените статус заказа на «Обработка» или «Выполнен»;
  • Проверьте почтовый ящик, указанный в заказе — должно прийти уведомление;
  • Проверьте логи WooCommerce на наличие ошибок;
  • Если письма не приходят, повторите диагностику.

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

  • Письма уходят в спам. Добавьте SPF, DKIM и DMARC записи для вашего домена в DNS. Используйте SMTP с аутентификацией.
  • Письма не отправляются из-за ограничений хостинга. Обратитесь в поддержку или переключитесь на внешний SMTP сервис.
  • Несовместимость плагинов SMTP и кеширования. Отключите кеширование для страниц, где происходит отправка почты или отключите плагин кеша.
  • Неправильно настроены права на файлы шаблонов писем. Проверьте права 644 для файлов и 755 для папок.

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

  • Используйте отдельный SMTP аккаунт с ограниченными правами для отправки почты, чтобы минимизировать риски.
  • Не храните пароли SMTP в открытом коде, используйте константы в wp-config.php.
  • Отключите отправку писем при тестировании на локальной среде, чтобы не спамить клиентов.
  • Регулярно обновляйте WooCommerce и плагины SMTP, чтобы избежать уязвимостей.

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

add_filter( 'woocommerce_email_enabled_customer_completed_order', '__return_false' ); // Отключить письмо при статусе "выполнен"

Пример кастомной функции для логирования отправленных писем

add_action( 'woocommerce_mail_failed', 'log_failed_woocommerce_mail', 10, 1 );
function log_failed_woocommerce_mail( $wp_error ) {
    error_log( 'Ошибка отправки WooCommerce письма: ' . print_r( $wp_error, true ) );
}

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

МетодПлюсыМинусыПример
PHP mail()Простота, не требует настройкиНизкая надежность, письма часто попадают в спамwp_mail()
SMTP через плагинНадежность, поддержка аутентификации, меньше спамаТребует настройки, возможны конфликтыWP Mail SMTP
Внешние сервисы (Mailgun, SendGrid)Высокая доставляемость, аналитикаПлатные, сложнее настраиватьAPI сервисов + SMTP
Как создать отзывы с оценками в WordPress
27.01.2026
Как избежать проблем с разрешениями файлов в WordPress
30.03.2026
Отладка выполнения AJAX-запросов в WordPress
04.12.2025
Как ограничить количество публикаций для пользователей по ролям в WordPress
17.03.2026
Как создать функционал обратной связи с оценкой в WordPress
20.01.2026