Диагностика проблемы с отправкой писем в WooCommerce
Если WooCommerce не отправляет письма после оформления заказа, сначала нужно локализовать проблему. Основные причины:
- Проблемы с почтовым сервером или настройками SMTP;
- Конфликт плагинов, блокирующих отправку;
- Ошибки в коде темы или плагинов, перехватывающих хуки WooCommerce;
- Задержки или блокировка на стороне хостинга;
- Некорректные настройки email-уведомлений в WooCommerce.
Как проверить, работает ли отправка почты в WordPress
Используйте плагин Check Email или отправьте тестовое письмо через WP CLI:
wp mail send --to=youremail@example.com --subject='Test email' --message='If you receive this, mail works.'Если тестовое письмо не пришло, проблема на уровне сервера или WordPress.
Проверка WooCommerce email
В админке WordPress перейдите WooCommerce → Настройки → Email и убедитесь, что уведомления активны и адреса получателей указаны верно. Можно активировать режим отладки для отправки почты в WooCommerce, добавив в wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);После попытки отправки письма проверьте файл wp-content/debug.log на ошибки, связанные с почтой.
Пошаговое решение проблемы отправки почты WooCommerce
1. Настройка SMTP для надежной отправки
По умолчанию WordPress использует wp_mail(), который опирается на mail() PHP. Часто это ведет к блокировке писем или попаданию в спам. Лучшее решение — настроить SMTP через плагин, например WP Mail SMTP или аналогичный.
Пример настройки SMTP в коде без плагина (в functions.php темы):
add_action('phpmailer_init', function($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.example.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = 'your_smtp_login';
$phpmailer->Password = 'your_smtp_password';
$phpmailer->SMTPSecure = 'tls';
$phpmailer->From = 'noreply@yourdomain.com';
$phpmailer->FromName = 'Your Store';
});2. Отключение конфликтующих плагинов
Отключите все плагины, кроме WooCommerce, и проверьте отправку письма. Если заработало — включайте плагины по одному для поиска конфликтующего. Особое внимание уделите плагинам кеширования и безопасности (например, Wordfence, WP Rocket).
3. Проверка кастомного кода и темы
Переключитесь временно на дефолтную тему (например, Storefront). Если письма отправляются — проблема в теме. Проверьте, нет ли хуков, которые перехватывают отправку писем:
remove_all_actions('woocommerce_order_status_completed_notification');Убедитесь, что не отключаете стандартные уведомления.
4. Проверка логов сервера
Обратитесь к логам почтового сервера и хостинга. Часто блокировка происходит из-за превышения лимитов или отказа сервера SMTP.
Проверка результата после внедрения
После внедрения изменений:
- Сделайте тестовый заказ в WooCommerce;
- Проверьте, приходит ли письмо покупателю и администратору;
- Проверьте папку спам;
- Проверьте логи
debug.logи SMTP; - Используйте инструменты Mail Tester для проверки SPF, DKIM, DMARC.
Частые ошибки и их исправление
- Письма уходят в спам — проверьте DNS-записи SPF, DKIM, DMARC на вашем домене.
- Ошибка подключения к SMTP — проверьте правильность хоста, порта, логина и пароля SMTP.
- Конфликт плагинов — используйте чистую установку WooCommerce для теста.
- Отсутствие адреса отправителя или некорректный From — задайте правильный From через SMTP или фильтр:
add_filter('wp_mail_from', function() { return 'noreply@yourdomain.com'; });
add_filter('wp_mail_from_name', function() { return 'Your Store'; });Практические советы по безопасности и производительности
- Используйте отдельный почтовый сервис для отправки уведомлений (Mailgun, SendGrid, Amazon SES).
- Ограничьте количество отправляемых писем, чтобы не попасть под спам-фильтры.
- Настройте кеширование страниц и исключите из кеша страницы оформления заказа и корзины.
- Регулярно обновляйте WooCommerce и плагины SMTP для безопасности.
Сравнение способов настройки отправки писем WooCommerce
| Метод | Преимущества | Недостатки |
|---|---|---|
Встроенный wp_mail() | Простота, не требует настройки | Низкая надежность, письма часто в спаме |
| SMTP через плагин (WP Mail SMTP) | Высокая надежность, простота настройки | Зависимость от стороннего сервиса |
| Ручная настройка SMTP в коде | Гибкость, контроль | Сложнее в поддержке, требует знаний |