Проблемы с отправкой email-сообщений в WordPress — частая головная боль для многих администраторов сайтов. Письма не доходят до пользователей, заказы в WooCommerce не подтверждаются, а уведомления о новых комментариях не приходят. В этой статье подробно разберём, как диагностировать причины сбоев в отправке почты, какие плагины помогут упростить задачу, и приведём примеры кода для отладки и исправления ошибок.
Почему в WordPress не отправляются письма: основные причины
WordPress по умолчанию использует PHP-функцию mail() для отправки email. Это простой способ, но он часто вызывает проблемы:
- Сервер не настроен на отправку почты или ограничивает использование
mail(). Это типично для многих shared-хостингов. - Письма попадают в спам из-за отсутствия SPF, DKIM, DMARC-записей в DNS.
- Неправильная конфигурация SMTP-сервера, если используется внешний почтовый сервис.
- Конфликты с другими плагинами, которые перехватывают или изменяют отправку почты.
- Ошибки в коде тем или плагинов, которые формируют или отправляют письма.
Понимание этих причин — первый шаг к эффективной диагностике.
Плагины для диагностики и настройки отправки email в WordPress
Для упрощения работы с почтой в WordPress существуют специализированные плагины. Рассмотрим самые полезные из них:
WP Mail SMTP
Один из самых популярных плагинов для настройки SMTP в WordPress. Позволяет указать параметры почтового сервера (Gmail, Яндекс, Mail.ru, SMTP любого провайдера) и отправлять письма через надёжный SMTP, минуя стандартную функцию mail().
- Поддерживает OAuth 2.0 для Gmail.
- Ведёт лог отправленных сообщений (в PRO версии).
- Имеет удобный мастер настройки.
Скачать и посмотреть подробнее можно на https://wpshop.ru/plugin/wp-mail-smtp/
WP Check Email
Простой плагин для тестовой отправки почты с сайта и проверки, успешно ли письмо дошло. Помогает быстро локализовать проблему.
Check & Log Email
Плагин, который ведёт детальный лог всех отправленных писем. Можно увидеть ошибки и причины неудачной отправки.
Как провести диагностику отправки email вручную с помощью кода
Если хочется проверить работу отправки почты программно, можно добавить тестовый код в functions.php вашей темы или в отдельный плагин. Например, создадим функцию wpcheck_send_test_email, которая отправляет письмо и выводит результат:
function wpcheck_send_test_email() {
$to = get_option('admin_email');
$subject = 'Тестовая отправка почты с сайта';
$message = 'Это тестовое письмо, отправленное для проверки работы почты на WordPress сайте.';
$headers = array('Content-Type: text/html; charset=UTF-8');
$sent = wp_mail($to, $subject, $message, $headers);
if ($sent) {
echo 'Письмо успешно отправлено на ' . esc_html($to);
} else {
echo 'Ошибка отправки письма на ' . esc_html($to);
}
}
// Запускаем функцию при вызове URL с параметром ?test_email=1
add_action('init', function() {
if (isset($_GET['test_email']) && $_GET['test_email'] == '1') {
wpcheck_send_test_email();
exit;
}
});
Теперь, чтобы протестировать отправку, достаточно перейти по ссылке https://ваш-сайт/?test_email=1 и посмотреть результат. Если письмо не пришло, значит проблема в конфигурации сервера или почты.
Настройка отправки писем через SMTP с помощью кода
Если вы не хотите использовать плагин, можно настроить отправку почты через SMTP программно. Для этого добавим фильтр wp_mail_smtp_custom в functions.php.
add_action('phpmailer_init', 'wpcheck_phpmailer_smtp_setup');
function wpcheck_phpmailer_smtp_setup($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.yourmailserver.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 = 'Название вашего сайта';
}
Замените параметры на данные вашего SMTP-провайдера. Это позволит отправлять почту надёжно и уменьшит вероятность попадания писем в спам.
Как избежать попадания писем в спам: SPF, DKIM, DMARC
Даже при корректной настройке SMTP письма могут попадать в спам, если в DNS не настроены специальные записи:
- SPF — указывает, какие серверы имеют право отправлять почту от вашего домена.
- DKIM — цифровая подпись письма, подтверждающая, что оно не подделано.
- DMARC — политика обработки писем, не прошедших SPF или DKIM.
Настройка этих записей происходит в панели управления DNS вашего домена. Обычно провайдеры почтовых сервисов (Google Workspace, Яндекс.Почта) предоставляют инструкции и готовые записи для вставки.
Дополнительные советы по диагностике и устранению проблем с почтой WordPress
- Проверьте логи сервера и WordPress. Иногда сервер блокирует отправку или возникает ошибка в PHP.
- Отключите все плагины, кроме почтовых, и смените тему на дефолтную. Это поможет выявить конфликт.
- Используйте плагин WPCheck для мониторинга ошибок и производительности. Он поможет выявить скрытые сбои.
- Проверяйте лимиты хостинга. Некоторые провайдеры ограничивают количество отправляемых писем.
Заключение
Настройка и диагностика отправки email в WordPress требует системного подхода: от проверки базовой функциональности PHP-mail до грамотной настройки SMTP и DNS-записей. Используйте специализированные плагины для упрощения задачи и не забывайте тестировать отправку письма вручную с помощью кода. Это поможет избежать потери важных уведомлений и обеспечит надёжную работу вашего сайта.