Диагностика проблемы с отправкой писем в WooCommerce
После обновления WooCommerce или WordPress многие пользователи сталкиваются с проблемой: письма с уведомлениями о заказах перестают уходить. Это может касаться как писем клиентам, так и уведомлений администратору.
Первый шаг — убедиться, что проблема именно в WooCommerce, а не в сервере или настройках почты. Для этого:
- Проверьте, отправляются ли системные письма WordPress (например, восстановление пароля).
- Включите логирование почты с помощью плагина
WP Mail Loggingили аналогичного. - Посмотрите логи сервера почты, если есть доступ.
- Проверьте настройки SMTP (если используется).
Типичные причины сбоев отправки писем
- Конфликт с другими плагинами, особенно SMTP или почтовыми;
- Изменения в шаблонах писем WooCommerce после обновления;
- Отключение или неправильная настройка хука отправки писем;
- Проблемы с сервером или блокировка исходящей почты;
- Ошибки в коде, если были кастомные доработки.
Пошаговое решение проблемы отправки писем в WooCommerce
1. Проверка стандартной отправки писем WordPress
Создайте простую PHP-страницу в корне сайта с кодом:
<?php<br>wp_mail('your-email@example.com', 'Test mail', 'This is a test email from WordPress');<br>?>Если письмо не приходит — проблема с сервером или почтой вне WooCommerce.
2. Использование SMTP плагина для надежной отправки
Установите и настройте плагин WP Mail SMTP. Это решит большинство серверных проблем.
Настройки SMTP должны включать:
- SMTP-сервер;
- Порт (обычно 587 или 465);
- Шифрование TLS/SSL;
- Авторизацию (имя пользователя/пароль);
- Отправитель с валидным доменом.
3. Проверка и восстановление хука отправки писем WooCommerce
WooCommerce отправляет email через класс WC_Email с использованием хука woocommerce_email_send.
Проверьте, что ваши кастомные фильтры и действия не отключают этот хук. Для диагностики временно отключите все плагины, кроме WooCommerce, и переключитесь на стандартную тему (например, Twenty Twenty-Three).
4. Очистка кэша и сброс транзиентов
Если вы используете кэширование, очистите весь кэш сайта и кэш кэширующих плагинов. Также удалите транзиенты WooCommerce:
global $wpdb;<br>$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_wc_%'");5. Восстановление шаблонов писем WooCommerce
Если были кастомные шаблоны писем в теме, убедитесь, что они совместимы с текущей версией WooCommerce. Для восстановления используйте команду:
wp wc template reset emailsИли вручную замените шаблоны в папке your-theme/woocommerce/emails на оригинальные из плагина.
Проверка результата после внедрения
После каждого шага отправьте тестовое письмо через WooCommerce:
- Перейдите в WooCommerce > Настройки > Email;
- Выберите любой email (например, "Новый заказ");
- Нажмите кнопку "Отправить тестовое письмо";
- Проверьте, пришло ли письмо на указанный адрес.
Если письмо пришло — проблема решена. Если нет, переходите к следующему шагу.
Частые ошибки и их исправление
- Ошибка: Письма уходят в спам. Решение: Настройте SPF, DKIM и DMARC записи для домена, используйте SMTP с авторизацией.
- Ошибка: Конфликт SMTP плагинов. Отключите все SMTP плагины кроме одного. Желательно использовать WP Mail SMTP.
- Ошибка: Кастомные фильтры отключают отправку писем. Проверьте в functions.php или плагинах наличие фильтров на
woocommerce_email_enabled_*и временно отключите их. - Ошибка: Устаревшие шаблоны писем. Обновите или удалите кастомные шаблоны.
Практические советы по безопасности и производительности
- Не храните SMTP-пароли в открытом виде — используйте константы в
wp-config.phpили переменные окружения. - Отключайте ненужные email уведомления в WooCommerce для снижения нагрузки.
- Для массовых рассылок используйте внешние службы (SendGrid, Mailgun) через SMTP, чтобы избежать блокировок.
- Регулярно проверяйте логи отправки почты и обновляйте плагин WooCommerce и WordPress для совместимости.
Сравнение способов решения проблемы отправки писем
| Метод | Плюсы | Минусы | Рекомендации |
|---|---|---|---|
| Использование стандартной функции wp_mail() | Простота, не требует плагинов | Зависит от сервера, возможны сбои | Только для теста или простых сайтов |
| Настройка SMTP через WP Mail SMTP | Надёжная отправка, логирование | Требует настройки сервера SMTP | Оптимальный вариант для большинства сайтов |
| Кастомные решения, хук woocommerce_email_send | Полный контроль над отправкой | Сложно, требует навыков разработки | Для продвинутых пользователей |