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

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

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

Перед началом решения необходимо проверить следующие моменты:

  • Работает ли вообще PHP-функция mail() на вашем сервере.
  • Не блокирует ли хостинг исходящую почту (например, по smtp).
  • Активированы ли уведомления в настройках WooCommerce.
  • Нет ли конфликтов с другими плагинами, которые могут перехватывать почту.

Проверка функций отправки почты

Для проверки можно использовать простой тестовый скрипт в корне сайта:

<?php
$to = 'youremail@example.com';
$subject = 'Test mail';
$message = 'This is a test email to check PHP mail function';
$headers = 'From: no-reply@yourdomain.com' . "\r\n";

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

Если письмо не приходит, проблема на уровне сервера или хостинга.

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

1. Включение SMTP отправки с помощью плагина WP Mail SMTP

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

  • Установите и активируйте плагин.
  • В настройках укажите SMTP-сервер, порт, адрес и пароль почтового ящика.
  • Протестируйте отправку из настроек плагина.

2. Проверка и настройка уведомлений WooCommerce

Перейдите в WooCommerce > Настройки > Email и убедитесь, что уведомление Новый заказ включено и настроено на правильный email администратора.

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

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

4. Использование кастомного хука для принудительной отправки письма

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

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

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

Это вызовет отправку email сразу после оформления заказа, независимо от стандартных триггеров.

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

Чтобы проверить, что проблема решена:

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

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

  • Письма попадают в спам — проверьте SPF, DKIM и DMARC-записи в DNS вашего домена.
  • Не настроен SMTP — сервер по умолчанию может блокировать mail(), настройте SMTP.
  • Конфликт плагинов — отключайте поочерёдно, чтобы найти виновника.
  • Неправильный email администратора — проверьте настройки WooCommerce.

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

  • Используйте SMTP с авторизацией и защищённым соединением (TLS/SSL) для безопасной отправки почты.
  • Регулярно обновляйте WooCommerce и плагины, чтобы избежать багов в почтовой системе.
  • Ограничьте количество плагинов для почты, чтобы избежать конфликтов.

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

МетодПреимуществаНедостатки
Использование PHP mail()Простота, не требует настроекМожет блокироваться хостингом, письма могут попадать в спам
SMTP с плагином (WP Mail SMTP)Надёжность, меньше спама, контроль настроекНужна настройка, иногда платный SMTP
Кастомный хук отправки письмаГарантирует вызов отправки, обход проблем с триггерамиТребует вмешательства в код, может создавать дубликаты письма

Наш каталог плагинов WordPress