Диагностика проблемы с отправкой писем в WooCommerce
Первым делом нужно понять, почему WooCommerce не отправляет письма с подтверждением заказа. Часто встречающиеся причины:
- SMTP-сервер не настроен или работает некорректно;
- Почтовая функция PHP
mail()отключена или заблокирована хостингом; - Конфликты с плагинами безопасности или кеширования;
- Ошибки в шаблонах писем или кастомный код, нарушающий отправку.
Для начала проверьте, отправляются ли другие письма WordPress, например, сброс пароля. Если нет — проблема в почтовой системе сайта.
Как проверить, работает ли отправка почты
Используйте плагин Check Email. Отправьте тестовое письмо. Если письмо не приходит — ищите проблему на уровне сервера или настроек WordPress.
Пошаговое решение проблемы отправки писем WooCommerce
1. Настройка SMTP для корректной отправки писем
Стандартная функция mail() часто блокируется. Рекомендуется использовать SMTP-сервер. Пример настройки через плагин WP Mail SMTP:
1. Установите и активируйте WP Mail SMTP (https://wpshop.ru/plugins/clearfy?utm_source=wperror.ru&utm_medium=article&utm_campaign=woocommerce-ne-rabotaet-otpravka-pisem-podtverzhdeniya-zakaza).
2. В настройках укажите SMTP-сервер вашего почтового провайдера (например, Gmail, Яндекс Почта, Mail.ru).
3. Введите логин и пароль от почтового ящика.
4. Включите авторизацию SSL/TLS, если требуется.
5. Сохраните настройки и отправьте тестовое письмо.Пример настройки SMTP вручную в functions.php темы (если не хотите использовать плагин):
add_action('phpmailer_init', function($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.yandex.ru';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 465;
$phpmailer->Username = 'your-email@yandex.ru';
$phpmailer->Password = 'your-email-password';
$phpmailer->SMTPSecure = 'ssl';
$phpmailer->From = 'your-email@yandex.ru';
$phpmailer->FromName = 'Название вашего сайта';
});2. Проверка и отключение конфликтующих плагинов
Отключите плагины кеширования (WP Super Cache, W3 Total Cache), безопасности (Wordfence, iThemes Security) и антиспам. Проверьте, отправляются ли письма после этого. Если проблема решилась — включайте по одному плагину, чтобы выявить конфликт.
3. Проверка шаблонов писем WooCommerce
Если вы кастомизировали шаблоны писем, верните их к стандартным:
- В админке WordPress перейдите WooCommerce → Статус → Инструменты → Восстановить шаблоны писем.
- Или временно переключитесь на стандартную тему (например, Storefront) для теста.
Проверка результата после внедрения
После настройки SMTP и устранения конфликтов отправьте тестовый заказ:
- Создайте заказ вручную в админке WooCommerce.
- Убедитесь, что в заказе статус установлен на «Обработка» или «Завершённый» (в зависимости от настроек).
- Проверьте почту, к которой привязан заказ — должно прийти письмо с подтверждением.
- Используйте журнал почты, если установлен плагин WP Mail Logging, чтобы убедиться, что письмо отправлено без ошибок.
Частые ошибки и как их исправить
- Письма попадают в спам — проверьте SPF, DKIM и DMARC записи домена, настройте их через хостинг или DNS-провайдера.
- Ошибка SMTP Authentication failed — проверьте логин, пароль и настройки безопасности почтового ящика.
- Письма не отправляются, но тест SMTP успешен — проверьте, что в WooCommerce включена отправка писем (WooCommerce → Настройки → Электронные письма).
- Письма не отправляются после обновления WordPress или WooCommerce — проверьте логи на наличие ошибок, отключите недавно добавленные плагины или кастомный код.
Практические советы по безопасности и производительности
- Используйте специализированный SMTP-сервис (SendGrid, Mailgun, Яндекс SMTP) для улучшения доставки и отслеживания писем.
- Регулярно обновляйте WordPress, WooCommerce и плагины для избежания уязвимостей.
- Ограничьте количество плагинов, влияющих на почту, чтобы снизить вероятность конфликтов.
- Активируйте логирование почты только при отладке, чтобы не нагружать базу данных.
Сравнение способов настройки отправки писем в WooCommerce
| Способ | Плюсы | Минусы | Рекомендации |
|---|---|---|---|
| Стандартный PHP mail() | Простота использования, без настроек | Низкая надежность, часто блокируется хостингом | Использовать только для тестов |
| SMTP через плагин (WP Mail SMTP) | Высокая надежность, удобство настройки, поддержка популярных почтовиков | Требует конфигурации, возможны ошибки авторизации | Рекомендуется для большинства сайтов |
Встроенная SMTP настройка с phpmailer_init | Гибкость, контроль кода | Неудобно для новичков, сложности с обновлением | Для опытных разработчиков, если плагин нежелателен |