Диагностика проблемы с отправкой писем в WooCommerce
Если вы заметили, что письма с подтверждением заказа не доходят до клиентов, это может быть вызвано несколькими причинами: неправильные настройки почты, проблемы с сервером, конфликт плагинов или тема, а также ошибки в коде. Прежде чем приступать к исправлению, важно понять, где именно возникает сбой.
Как проверить работу почтовой системы WordPress и WooCommerce
- Используйте плагин
Check Emailдля отправки тестового письма и проверки базовой отправки почты. - Проверьте записи логов сервера на предмет ошибок при отправке почты (например, в логах PHP или почтового сервера).
- Отключите все плагины кроме WooCommerce и переключитесь на стандартную тему WordPress (например, Twenty Twenty-One) для исключения конфликтов.
- Проверьте настройки WooCommerce в разделе WooCommerce > Настройки > Email — активированы ли нужные уведомления и корректен ли адрес отправителя.
Пошаговое решение проблемы с отправкой писем о подтверждении заказа
1. Настройка SMTP для надежной отправки писем
По умолчанию WordPress использует функцию wp_mail(), которая может быть ограничена настройками хостинга. Лучшее решение — настроить SMTP. Вот пример настройки через плагин WP Mail SMTP:
add_action('phpmailer_init', function($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.yourmail.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = 'your-email@example.com';
$phpmailer->Password = 'your-email-password';
$phpmailer->SMTPSecure = 'tls';
$phpmailer->From = 'your-email@example.com';
$phpmailer->FromName = 'Ваш магазин';
});После настройки отправьте тестовое письмо из плагина WP Mail SMTP и убедитесь, что оно приходит.
2. Проверка и исправление шаблонов писем WooCommerce
Если SMTP настроен и письма из WordPress отправляются, но уведомления WooCommerce нет, возможно, проблема в переопределённых шаблонах писем.
- Перейдите в WooCommerce > Настройки > Email и убедитесь, что уведомления Новый заказ, Обработка заказа, Завершённый заказ включены.
- Проверьте папку
your-theme/woocommerce/emailsна предмет кастомных шаблонов. Временно переименуйте эту папку, чтобы WooCommerce использовал стандартные шаблоны.
3. Принудительная отправка письма программно
Для отладки можно отправить письмо вручную через код, чтобы увидеть, срабатывает ли функция отправки:
add_action('init', function() {
if (isset($_GET['test_wc_email'])) {
$order = wc_get_order(1); // замените 1 на ID существующего заказа
if ($order) {
WC()->mailer()->emails['WC_Email_Customer_Processing_Order']->trigger($order->get_id());
echo 'Письмо отправлено';
} else {
echo 'Заказ не найден';
}
exit;
}
});Зайдите на сайт с параметром ?test_wc_email=1 и проверьте, пришло ли письмо.
Проверка результата после внедрения решений
- Отправьте тестовое письмо через SMTP-плагин — оно должно прийти без ошибок.
- Создайте новый заказ в WooCommerce с тестовым пользователем и проверьте получение письма.
- Используйте отладочные логи WooCommerce: включите в
wp-config.phpdefine('WP_DEBUG', true); define('WP_DEBUG_LOG', true);, чтобы записи об ошибках записывались вwp-content/debug.log.
Частые ошибки и как их исправить
- Письма попадают в спам: Проверьте SPF, DKIM, DMARC записи домена. Используйте SMTP с авторизацией и корректным From.
- Письма не отправляются, но тестовое письмо приходит: Проверьте, не отключены ли уведомления в WooCommerce.
- Конфликты с плагинами безопасности или кеширования: Временно отключите их и проверьте отправку.
- Пользовательские шаблоны писем ломают вывод: Временно используйте стандартные шаблоны WooCommerce.
Практические советы по безопасности и производительности
- Используйте авторизованный SMTP-сервер с поддержкой TLS для безопасной передачи писем.
- Ограничьте количество одновременных отправок писем, чтобы не перегружать сервер и не попасть под антиспам-фильтры.
- Регулярно обновляйте WooCommerce и плагины для исправления уязвимостей в системе отправки писем.
- Используйте плагины мониторинга почты (например, WP Mail Logging) для отслеживания ошибок и успешных отправок.
Сравнение способов отправки почты в WooCommerce
| Метод | Преимущества | Недостатки |
|---|---|---|
Стандартный wp_mail() | Нет дополнительных настроек, простота | Зависит от сервера, часто письма попадают в спам |
| SMTP через плагин (WP Mail SMTP) | Надёжность, поддержка авторизации, меньше спама | Требует настройки, возможны проблемы с совместимостью |
| Внешние сервисы почты (SendGrid, Mailgun) | Масштабируемость, аналитика, доставка | Платные, сложнее интеграция |