Диагностика проблемы с отправкой писем в WooCommerce
Одна из частых проблем в WooCommerce — письма с уведомлениями о смене статуса заказа не доходят до клиентов или вовсе не отправляются. Перед тем как приступать к исправлению, необходимо определить, на каком этапе возникает сбой:
- Проверка настроек WooCommerce: зайдите в WooCommerce > Настройки > Email и убедитесь, что нужные уведомления включены и адреса электронной почты корректны.
- Проверка почтовой системы хостинга: Используйте плагин
Check Emailдля тестовой отправки писем. Если тест не проходит, проблема на уровне сервера. - Конфликты с плагинами и темой: Отключите все плагины кроме WooCommerce и переключитесь на стандартную тему (например, Storefront). Если проблема исчезнет, включайте по одному плагину, чтобы выявить виновника.
- Ошибки в журнале WooCommerce: Включите логирование в WooCommerce > Настройки > Email (отметьте «Включить журналирование email») и проверьте файлы логов в
wp-content/uploads/wc-logs/.
Пошаговое решение проблемы с отправкой писем при смене статуса заказа
1. Проверка и настройка отправки писем через SMTP
Стандартный wp_mail() часто блокируется хостингом или попадает в спам. Для надежной отправки используйте SMTP:
add_action('phpmailer_init', function($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.yourserver.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = 'your_email@example.com';
$phpmailer->Password = 'your_password';
$phpmailer->SMTPSecure = 'tls';
$phpmailer->From = 'your_email@example.com';
$phpmailer->FromName = 'Your Site Name';
});Или установите плагин Clearfy Pro — там есть встроенные настройки SMTP и оптимизации отправки почты.
2. Принудительный вызов отправки email при смене статуса
Если письмо не отправляется автоматически, можно вручную инициировать отправку:
add_action('woocommerce_order_status_changed', function($order_id, $old_status, $new_status) {
$order = wc_get_order($order_id);
if ($new_status === 'completed') {
WC()->mailer()->get_emails()['WC_Email_Customer_Completed_Order']->trigger($order_id);
}
}, 10, 3);Замените 'completed' на нужный статус, например 'processing' или 'on-hold'.
3. Очистка кэша и проверка очереди отправки
Если используете кеширующие или оптимизирующие плагины, отключите на время их работу, чтобы исключить задержки.
Проверка результата после внедрения решения
- Создайте тестовый заказ и смените его статус вручную через админку.
- Проверьте, приходит ли письмо на тестовый email.
- Посмотрите логи WooCommerce, если письма не пришли.
- Используйте плагин
WP Mail Loggingдля отслеживания отправленных писем.
Частые ошибки и их исправление
- Письма попадают в спам: Проверьте SPF, DKIM и DMARC записи вашего домена. Используйте SMTP с авторизацией и шифрованием.
- Некорректный email отправителя: Убедитесь, что
Fromсовпадает с доменом сайта. - Конфликт плагинов: Отключите лишние плагины, особенно те, что влияют на почту (например, плагины антиспама).
- Ошибки в коде темы: Проверьте, не переопределяете ли вы функцию отправки email в functions.php или шаблонах.
Практические советы по безопасности и производительности
- Используйте специализированные SMTP-сервисы (SendGrid, Mailgun, Amazon SES) для надежной доставки.
- Включите логирование отправки писем для быстрого выявления проблем.
- Не отправляйте письма в синхронном режиме при массовых обновлениях — используйте очереди (например, WP-Cron).
- Регулярно обновляйте WooCommerce и плагины для избежания уязвимостей.
Сравнение вариантов решения проблемы с отправкой писем
| Метод | Плюсы | Минусы | Пример использования |
|---|---|---|---|
| Использование SMTP в коде | Контроль, надежность | Требует знаний, возможны ошибки в настройках | phpmailer_init хук (см. выше) |
| Плагин Clearfy Pro | Простая настройка, дополнительная оптимизация | Платный, лишние функции если нужны только почтовые настройки | Clearfy Pro |
| Ручной вызов email через хук | Гарантированная отправка конкретного письма | Требуется доработка кода для каждого статуса | woocommerce_order_status_changed (см. выше) |