Диагностика проблемы с отправкой писем в WooCommerce
Ошибка с отправкой уведомлений о смене статуса заказа — одна из частых проблем в WooCommerce. Часто пользователи жалуются, что покупатели не получают письма с подтверждением, уведомлениями об оплате или изменении статуса заказа.
Для начала нужно проверить следующие моменты:
- Включены ли email-уведомления в настройках WooCommerce;
- Работает ли базовая отправка почты с сервера (например, через wp_mail);
- Не блокируются ли письма спам-фильтрами;
- Не конфликтуют ли плагины или тема с отправкой почты;
- Корректно ли настроен SMTP (если используется);
- Настроены ли триггеры для отправки писем (статусы заказов и т.д.).
Пошаговое решение проблемы с отправкой писем в WooCommerce
1. Проверка включения email-уведомлений в WooCommerce
Перейдите в WooCommerce → Настройки → Email и убедитесь, что нужные уведомления активны (например, "Новый заказ", "Обработка заказа", "Завершённый заказ" и т. д.). Проверьте, что адреса получателей корректны.
2. Тестирование отправки почты в WordPress
Создайте простой тестовый скрипт для проверки wp_mail — если письма не отправляются на базовом уровне, проблема не в WooCommerce:
add_action('admin_post_test_mail', function() {
wp_mail('your_email@example.com', 'Test mail', 'This is a test mail from WordPress.');
wp_die('Mail sent (check inbox).');
});Перейдите по URL https://your-site.com/wp-admin/admin-post.php?action=test_mail и проверьте, дошло ли письмо.
3. Настройка SMTP для надежной отправки писем
Если письма не отправляются или попадают в спам, рекомендуется настроить SMTP-сервер. Для этого можно использовать бесплатный плагин WP Mail SMTP или аналогичный. В настройках укажите SMTP-сервер вашего почтового провайдера (Gmail, Яндекс, Mail.ru и т.п.).
4. Проверка конфликтов с плагинами и темой
Деактивируйте все плагины, кроме WooCommerce, и переключитесь на стандартную тему (например, Twenty Twenty-Three). Проверьте, отправляются ли письма. Если да — включайте плагины по одному, чтобы выявить конфликтующий.
5. Чистка очереди писем и кэширования
Если на сайте используются плагины очереди писем или кэширования (например, WP Rocket, Redis), убедитесь, что они не задерживают отправку писем. Очистите кэш и проверьте настройки отправки.
6. Программное решение: принудительная отправка писем при смене статуса заказа
Иногда помогает хук, который принудительно вызывает отправку письма, например:
add_action('woocommerce_order_status_completed', 'force_send_completed_email', 20, 1);
function force_send_completed_email($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
WC()->mailer()->get_emails()['WC_Email_Customer_Completed_Order']->trigger($order_id, $order);
}<Этот код вручную отправляет письмо при переходе заказа в статус "завершённый".
Проверка результата после внедрения решений
Чтобы убедиться в исправлении:
- Создайте тестовый заказ в магазине;
- Измените статус заказа (например, на "обработка" или "завершён");
- Проверьте, приходит ли письмо на указанный адрес клиента;
- Проверьте папку «Спам» и логи почтового сервера (если есть доступ).
Также используйте плагин WP Mail Logging для ведения логов отправленных писем и диагностики ошибок.
Частые ошибки и их исправление
- Письма отключены в настройках WooCommerce. Проверьте раздел Email и включите нужные уведомления.
- Неправильный email получателя. Адреса должны быть корректными и актуальными.
- Неправильно настроенный SMTP или его отсутствие. Настройте SMTP через плагин для стабильной отправки.
- Конфликты с плагинами или темой. Диагностируйте, отключая плагины и меняя тему.
- Почтовый сервер блокирует сообщения. Проверьте SPF, DKIM, DMARC записи и настройте их при необходимости.
- Отсутствие или неправильное использование хуков WooCommerce. Используйте стандартные хуки или правильно вызывайте методы отправки.
Практические советы по безопасности и производительности
- Настройте SPF, DKIM и DMARC записи для домена, чтобы письма не попадали в спам и не были подделаны.
- Используйте SMTP с поддержкой шифрования (TLS) для безопасной передачи почты.
- Не отправляйте письма синхронно в момент обработки заказа — это может замедлить работу сайта. Используйте очереди отправки, например, через сторонние сервисы (Mailgun, SendGrid и т.п.).
- Логируйте отправку почты для быстрого обнаружения ошибок.
- Регулярно обновляйте WooCommerce, тему и плагины для избежания багов и уязвимостей.
Сравнение способов решения проблемы отправки писем в WooCommerce
| Метод | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Включение email-уведомлений в WooCommerce | Простая настройка, без кода | Не помогает при проблемах с сервером | Первичная проверка |
| Настройка SMTP через плагин | Надежная отправка, меньше спама | Требует дополнительных настроек | Проблемы со стандартной отправкой почты |
| Принудительный вызов отправки письма через хук | Гарантирует отправку уведомления | Требует программирования, может дублировать письма | Если письма не отправляются автоматически |
| Диагностика конфликтов с плагинами и темой | Выявляет корень проблемы | Занимает время | Если стандартные методы не помогают |