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

Диагностика проблемы: email не отправляются после подтверждения заказа

При работе с WooCommerce часто возникает ситуация, когда письма покупателю о подтверждении заказа не отправляются или приходят с задержкой. Это критично для интернет-магазина, так как пользователь не получает уведомления и может отказаться от покупки.

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

  • Проверьте настройки почты в WooCommerce: WooCommerce → Настройки → Emails.
  • Убедитесь, что почтовый сервер работает корректно, отправив тестовое письмо через хостинг (например, через phpMailer).
  • Проверьте логи WooCommerce и сервера на предмет ошибок отправки.
  • Отключите временно все плагины кроме WooCommerce, чтобы исключить конфликт.
  • Проверьте, не блокирует ли SMTP-сервер исходящую почту.

Пошаговое решение: настройка правильной отправки email после подтверждения заказа

1. Подключение SMTP через плагин WP Mail SMTP

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

Установите плагин WP Mail SMTP, настройте SMTP-сервер (Gmail, Яндекс, ваш корпоративный сервер) с правильными учетными данными.

2. Хук для дополнительной проверки и логирования отправки

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин, чтобы логировать попытки отправки писем WooCommerce после смены статуса заказа на processing (подтверждённый):

add_action('woocommerce_order_status_processing', 'custom_log_email_order_processing', 10, 1);
function custom_log_email_order_processing($order_id) {
    $order = wc_get_order($order_id);
    if (!$order) return;

    // Логируем попытку отправки письма
    error_log('Отправка email для заказа #'. $order_id .' пользователю '. $order->get_billing_email());
}

Это поможет убедиться, что событие срабатывает и WooCommerce пытается отправить письмо.

3. Принудительная отправка email через код

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

add_action('woocommerce_order_status_processing', 'custom_send_email_on_order_processing', 20, 1);
function custom_send_email_on_order_processing($order_id) {
    $mailer = WC()->mailer();
    $mails = $mailer->get_emails();

    if (!empty($mails)) {
        foreach ($mails as $mail) {
            if ($mail->id === 'customer_processing_order') {
                $mail->trigger($order_id);
            }
        }
    }
}

Этот код гарантирует, что именно письмо "Заказ в обработке" отправится при смене статуса.

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

  • Создайте тестовый заказ, смените его статус на "В обработке".
  • Проверьте папку входящих у покупателя (укажите свой тестовый email).
  • Просмотрите логи сервера и error_log на наличие сообщений из функции логирования.
  • Если письма не приходят, проверьте папку спама.

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

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

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

  • Используйте отдельный email-аккаунт для отправки почты магазина, чтобы не смешивать с личной почтой.
  • Ограничьте частоту отправки писем, чтобы избежать блокировок SMTP-сервера.
  • Регулярно обновляйте WooCommerce и плагины для корректной работы email-функционала.
  • Используйте логирование email-событий для своевременного выявления проблем.

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

МетодПлюсыМинусы
Стандартный wp_mail()Простота, не требует настроекНизкая надежность, письма часто в спаме
SMTP через плагин (WP Mail SMTP)Надежная отправка, авторизацияТребует настройки SMTP-сервера
Внешние сервисы (SendGrid, Mailgun)Высокая доставляемость, аналитикаПлатные тарифы, сложность настройки
Как установить ограничение на регистрацию пользователей в WordPress по IP и времени
15.03.2026
Удаление неиспользуемых CSS и JS в WordPress для ускорения загрузки
26.01.2026
WooCommerce: как автоматически удалять отменённые заказы
21.05.2026
Оценка и оптимизация загрузки скриптов в WordPress
06.04.2026
Как создать свой шорткод в WordPress: практическое руководство
04.11.2025

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