WooCommerce: решение проблемы с неотсылкой писем после покупки

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

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

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

Проверка отправки email вручную

Установите и активируйте плагин WP Mail SMTP для отправки тестового письма. Если письмо не приходит, проблема в настройках сервера или SMTP.

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

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

Использование стандартной функции wp_mail() часто ограничено сервером. Для надежности подключите SMTP через плагин WP Mail SMTP:

  1. Установите и активируйте WP Mail SMTP;
  2. В настройках укажите SMTP-сервер вашего почтового провайдера (например, Gmail, Яндекс, Mail.ru или корпоративный SMTP);
  3. Введите логин и пароль для SMTP;
  4. Установите порт (обычно 465 для SSL или 587 для TLS);
  5. Отправьте тестовое письмо и убедитесь, что почта уходит.

2. Проверка хуков WooCommerce для отправки писем

WooCommerce использует хук woocommerce_order_status_changed для отправки уведомлений. Иногда письма не отправляются, если статус заказа не меняется правильно или фильтры отключают отправку.

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

add_action('woocommerce_order_status_changed', 'log_email_sending', 10, 4);
function log_email_sending($order_id, $old_status, $new_status, $order) {
    error_log("Order #$order_id changed status from $old_status to $new_status");
    if ( $new_status === 'processing' ) {
        // Пример: отправка письма
        $mailer = WC()->mailer();
        $mails = $mailer->get_emails();
        if ( ! empty( $mails ) ) {
            foreach ( $mails as $mail ) {
                if ( $mail->id === 'customer_processing_order' ) {
                    $mail->trigger( $order_id );
                    error_log("Email customer_processing_order triggered for order #$order_id");
                }
            }
        }
    }
}

3. Очистка и обновление email шаблонов

Если шаблоны писем повреждены, письма могут не отправляться. Перейдите в WooCommerce > Настройки > Электронные письма, сбросьте настройки шаблонов или загрузите их заново.

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

  • Создайте тестовый заказ в магазине с разными статусами (в ожидании, в обработке, выполнен);
  • Проверьте, приходят ли письма на почту покупателя и администратора;
  • Проверьте логи сервера и WP_DEBUG, чтобы убедиться, что ошибок отправки почты нет;
  • Используйте тест отправки письма через WP Mail SMTP, чтобы проверить общую работоспособность почтовой системы.

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

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

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

  • Используйте SMTP с TLS для защиты передаваемых данных;
  • Отключайте отправку писем при тестировании на локальных серверах, чтобы избежать спама;
  • Логируйте отправку писем для мониторинга и отладки;
  • Для массовой рассылки используйте специализированные сервисы (Mailgun, SendGrid), чтобы избежать блокировок;
  • Регулярно обновляйте WooCommerce и плагины для безопасности почтовой системы.

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

МетодПлюсыМинусыКогда использовать
PHP mail()Встроенный, не требует настройкиНизкая надежность, спам-фильтрыТестовые и простые сайты
SMTP через плагинВысокая надежность, поддержка авторизацииНужна настройка, возможны ограничения хостингаЛюбые рабочие сайты, магазины
Сторонние сервисы (SendGrid, Mailgun)Высокая масштабируемость, аналитикаПлатные, требует интеграцииМассовая рассылка, крупные проекты
Как создать и использовать REST API эндпоинты в WordPress
26.12.2025
WooCommerce: как автоматически изменять статус заказа по срокам
22.05.2026
Как добавить автоматические ответы в комментарии WordPress
09.01.2026
Как использовать фильтр YITH WooCommerce Wishlist для добавления собственных критериев
16.01.2026
Автоматическое удаление неактивных пользователей WordPress с помощью кода
27.03.2026