WooCommerce: решение проблем с неотправкой писем подтверждения при изменении статуса заказа

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

Одна из частых проблем в WooCommerce — письма с уведомлениями о смене статуса заказа не доходят до клиентов или вовсе не отправляются. Перед тем как приступать к исправлению, необходимо определить, на каком этапе возникает сбой:

  • Проверка настроек WooCommerce: зайдите в WooCommerce > Настройки > Email и убедитесь, что нужные уведомления включены и адреса электронной почты корректны.
  • Проверка почтовой системы хостинга: Используйте плагин Check Email для тестовой отправки писем. Если тест не проходит, проблема на уровне сервера.
  • Конфликты с плагинами и темой: Отключите все плагины кроме WooCommerce и переключитесь на стандартную тему (например, Storefront). Если проблема исчезнет, включайте по одному плагину, чтобы выявить виновника.
  • Ошибки в журнале WooCommerce: Включите логирование в WooCommerce > Настройки > Email (отметьте «Включить журналирование email») и проверьте файлы логов в wp-content/uploads/wc-logs/.

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

1. Проверка и настройка отправки писем через SMTP

Стандартный wp_mail() часто блокируется хостингом или попадает в спам. Для надежной отправки используйте SMTP:

add_action('phpmailer_init', function($phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.yourserver.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'your_email@example.com';
    $phpmailer->Password = 'your_password';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = 'your_email@example.com';
    $phpmailer->FromName = 'Your Site Name';
});

Или установите плагин Clearfy Pro — там есть встроенные настройки SMTP и оптимизации отправки почты.

2. Принудительный вызов отправки email при смене статуса

Если письмо не отправляется автоматически, можно вручную инициировать отправку:

add_action('woocommerce_order_status_changed', function($order_id, $old_status, $new_status) {
    $order = wc_get_order($order_id);
    if ($new_status === 'completed') {
        WC()->mailer()->get_emails()['WC_Email_Customer_Completed_Order']->trigger($order_id);
    }
}, 10, 3);

Замените 'completed' на нужный статус, например 'processing' или 'on-hold'.

3. Очистка кэша и проверка очереди отправки

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

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

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

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

  • Письма попадают в спам: Проверьте SPF, DKIM и DMARC записи вашего домена. Используйте SMTP с авторизацией и шифрованием.
  • Некорректный email отправителя: Убедитесь, что From совпадает с доменом сайта.
  • Конфликт плагинов: Отключите лишние плагины, особенно те, что влияют на почту (например, плагины антиспама).
  • Ошибки в коде темы: Проверьте, не переопределяете ли вы функцию отправки email в functions.php или шаблонах.

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

  • Используйте специализированные SMTP-сервисы (SendGrid, Mailgun, Amazon SES) для надежной доставки.
  • Включите логирование отправки писем для быстрого выявления проблем.
  • Не отправляйте письма в синхронном режиме при массовых обновлениях — используйте очереди (например, WP-Cron).
  • Регулярно обновляйте WooCommerce и плагины для избежания уязвимостей.

Сравнение вариантов решения проблемы с отправкой писем

МетодПлюсыМинусыПример использования
Использование SMTP в кодеКонтроль, надежностьТребует знаний, возможны ошибки в настройкахphpmailer_init хук (см. выше)
Плагин Clearfy ProПростая настройка, дополнительная оптимизацияПлатный, лишние функции если нужны только почтовые настройкиClearfy Pro
Ручной вызов email через хукГарантированная отправка конкретного письмаТребуется доработка кода для каждого статусаwoocommerce_order_status_changed (см. выше)
Как настроить отправку писем через SMTP в WordPress
13.03.2026
Направление запроса и обработка данных в WordPress REST API
24.01.2026
Как удалить или изменить URL адрес постов в WordPress без потери SEO
20.02.2026
Как сделать автоматический rollback плагинов в WordPress при ошибках
15.04.2026
Как создать динамические настройки темы WordPress с использованием Customizer API
14.12.2025