Почему письма WordPress не доходят и как это проверить
Проблемы с отправкой писем в WordPress через SMTP — частая ситуация, особенно при использовании стандартной функции wp_mail(). Основные признаки: пользователи не получают уведомления, письма попадают в спам или вовсе не отправляются. Чтобы диагностировать причину, нужно проверить несколько ключевых моментов.
Диагностика проблемы отправки писем
- Проверьте логи сервера (PHP error_log, mail.log) на наличие ошибок отправки.
- Убедитесь, что SMTP-сервер доступен и правильно настроен (адрес, порт, шифрование).
- Проверьте, нет ли блокировок со стороны хостинга (firewall, ограничения на исходящую почту).
- Используйте плагины для логирования SMTP-сессий, например WP Mail Logging.
- Проверьте, что адрес отправителя совпадает с разрешёнными на SMTP-сервере.
Пошаговое решение: настройка и отладка SMTP в WordPress
Самый надежный способ отправлять почту с WordPress — использовать SMTP с правильной аутентификацией и безопасным соединением. Для этого:
- Установите плагин WP Mail SMTP из официального репозитория.
- Перейдите в Настройки > WP Mail SMTP и выберите SMTP-сервер (например, Gmail, Mail.ru, Яндекс или свой почтовый сервер).
- Заполните параметры SMTP: хост, порт, тип шифрования (SSL/TLS), имя пользователя и пароль.
- Включите логирование писем в настройках плагина.
- Настройте от кого будет отправляться почта — используйте доменный email, например
no-reply@yourdomain.ru.
Пример базовой SMTP-конфигурации через код в functions.php
add_action('phpmailer_init', function($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.yourserver.ru';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = 'user@yourdomain.ru';
$phpmailer->Password = 'yourpassword';
$phpmailer->SMTPSecure = 'tls';
$phpmailer->From = 'no-reply@yourdomain.ru';
$phpmailer->FromName = 'Your Site Name';
});Как проверить, что решение работает
После настройки SMTP сделайте следующее:
- В меню плагина WP Mail SMTP используйте функцию Тестовое письмо — отправьте письмо на свой email и проверьте, приходит ли оно.
- Проверьте папку «Входящие» и «Спам».
- Просмотрите логи плагина на наличие ошибок.
- Если письма не приходят, повторите диагностику, уделяя внимание правильности пароля и портов.
Частые ошибки и их исправление
- Неправильный порт или шифрование. SMTP обычно использует 465 (SSL) или 587 (TLS). Уточните у хостера.
- Несоответствие адреса отправителя и SMTP-аккаунта. Многие SMTP-серверы блокируют письма с чужим From.
- Блокировка исходящей почты хостингом. Проверьте политику хостера, иногда нужно включить SMTP вручную.
- Ограничения безопасности почтового сервера. Например, Gmail может требовать OAuth2 или включение "Менее безопасных приложений".
Практические советы по безопасности и производительности
- Не храните SMTP-пароли в открытом виде, используйте константы в wp-config.php или секретные менеджеры.
- Используйте двухфакторную аутентификацию SMTP-сервера, если поддерживается.
- Регулярно обновляйте плагин WP Mail SMTP и WordPress для безопасности.
- Избегайте отправки писем массово через PHP mail(), используйте очереди и ограничение частоты писем для снижения нагрузки.
Сравнение вариантов решения проблемы SMTP
| Вариант | Плюсы | Минусы | Рекомендации |
|---|---|---|---|
| Плагин WP Mail SMTP | Простая настройка, логирование, поддержка популярных сервисов | Дополнительный плагин, нагрузка на сайт | Оптимален для большинства сайтов |
Настройка через phpmailer_init (код) | Гибкий контроль, без плагинов | Требует навыков, возможны ошибки | Для опытных разработчиков |
| Использование внешних сервисов (SendGrid, Mailgun) | Высокая надежность, аналитика | Дополнительные расходы, интеграция | Для больших сайтов и массовых рассылок |