Диагностика проблемы с отправкой писем в WooCommerce
Когда после оформления заказа клиент не получает письмо с подтверждением, это может указывать на несколько проблем в работе WooCommerce или серверной почты. Для начала необходимо понять, на каком этапе возникает сбой:
- Письма не отправляются вообще (все уведомления WooCommerce);
- Письма отправляются, но не доходят до получателя (попадают в спам или блокируются);
- Письмо подтверждения заказа не отправляется, а другие письма (например, сброс пароля) доходят.
Проверка лога ошибок сервера и WooCommerce поможет понять источник сбоя.
Как проверить работу отправки email в WooCommerce
Включите логирование писем в WooCommerce:
WooCommerce > Настройки > Email > Включить ведение журналаПосле этого сделайте тестовый заказ и проверьте wp-content/uploads/wc-logs — там появится лог с информацией об отправке. Если там ошибки, например, SMTP-сервер отклоняет письмо, это даст направление для решения.
Пошаговое решение проблемы с отправкой письма подтверждения в WooCommerce
1. Проверка настроек email в WooCommerce
- Убедитесь, что в
WooCommerce > Настройки > Emailвключено письмо "Новый заказ" и "Подтверждение заказа". - Проверьте, что адрес отправителя (From address) корректен и совпадает с доменом вашего сайта (например,
no-reply@вашдомен.ru), чтобы избежать блокировки спам-фильтрами.
2. Настройка SMTP для надежной отправки писем
Частая причина проблем — использование стандартной функции wp_mail(), которая часто некорректно работает на хостинге. Рекомендуется настроить SMTP-подключение:
- Установите плагин WP Mail SMTP.
- В настройках укажите SMTP-сервер вашего почтового провайдера (например, Gmail, Яндекс, Mail.ru или корпоративный SMTP), логин и пароль.
- Обязательно проверьте отправку тестового письма через интерфейс плагина.
3. Проверка и исправление кода, если письма кастомизируются
Если на сайте есть кастомные функции, меняющие стандартное поведение отправки писем, временно отключите их, чтобы исключить конфликт.
Пример корректной отправки письма в WooCommerce с использованием хука woocommerce_email_headers для добавления заголовков:
add_filter('woocommerce_email_headers', function($headers, $email_id, $order) {
if ($email_id === 'customer_completed_order') {
$headers .= 'Reply-To: support@yourdomain.ru\r\n';
}
return $headers;
}, 10, 3);4. Тестирование с отключенными плагинами и темой
Чтобы исключить конфликт, временно переключитесь на дефолтную тему (например, Storefront) и отключите все плагины кроме WooCommerce и SMTP.
Если после этого письма отправляются, включайте плагины и тему по одному, чтобы выявить виновника.
Проверка результата после внедрения решения
- Создайте новый тестовый заказ и проверьте, приходит ли письмо подтверждения на указанный email.
- Проверьте папки «Входящие» и «Спам».
- Посмотрите логи отправки WooCommerce в
WooCommerce > Статус > Логи.
Частые ошибки и как их исправить
- Отправитель не совпадает с доменом. Большинство почтовых серверов блокируют письма с адресом отправителя, отличным от домена сайта. Используйте адрес вида
no-reply@вашдомен.ru. - SMTP не настроен или неправильно настроен. Настройте SMTP с правильными параметрами и включите авторизацию.
- Плагины для кэширования мешают отправке. Исключите страницы оформления заказа и email-процесс из кэширования.
- Конфликт плагинов. Поочередно отключайте плагины для выявления проблемного.
- Письма попадают в спам. Настройте SPF, DKIM и DMARC записи в DNS, чтобы повысить доверие почтовых сервисов.
Практические советы по безопасности и производительности
- Используйте SMTP-серверы с поддержкой TLS для шифрования соединения.
- Регулярно обновляйте WooCommerce и плагины, чтобы использовать последние исправления безопасности.
- Используйте плагины, которые логируют отправку писем, чтобы оперативно находить и устранять проблемы.
- Для крупных магазинов рассмотрите использование сторонних сервисов (SendGrid, Mailgun) для рассылки email, что улучшит доставляемость.
Сравнение вариантов настройки отправки писем в WooCommerce
| Метод | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
Стандартная функция wp_mail() | Простая настройка, встроена в WordPress | Низкая надежность, письма могут не отправляться | Маленькие сайты без проблем с почтой |
| SMTP с плагином WP Mail SMTP | Высокая надежность, поддержка почтовых сервисов | Требует настройки SMTP-сервера | Любые магазины WooCommerce, где важна доставка писем |
| Сторонние сервисы (SendGrid, Mailgun) | Максимальная доставляемость, аналитика | Дополнительные расходы и сложность настройки | Крупные проекты с большим количеством заказов |