В WordPress стандартная функция отправки почты wp_mail() использует PHP-функцию mail(), которая часто вызывает проблемы с доставкой сообщений. Особенно это актуально для сайтов, размещенных на хостингах с ограничениями на отправку почты. В этой статье мы подробно разберем, как настроить отправку почтовых уведомлений через SMTP-сервер — это позволит значительно повысить надежность доставки писем и избежать попадания в спам.
Почему возникают проблемы с отправкой почты в WordPress
По умолчанию WordPress использует функцию wp_mail(), которая в свою очередь использует PHP-функцию mail(). Однако у многих хостингов она либо отключена, либо работает некорректно. В результате:
- Письма не доходят до адресатов;
- Письма попадают в спам;
- Отправка может работать с задержками или не работать вовсе.
Причина в том, что mail() не поддерживает аутентификацию, не шифрует сообщения и не гарантирует соответствие стандартам, что часто приводит к блокировкам.
Решение — использовать SMTP-сервер, который обеспечивает надежную аутентификацию и шифрование.
Выбор плагина для отправки почты по SMTP в WordPress
Для интеграции SMTP в WordPress можно использовать специализированные плагины. Вот три популярных варианта:
WP Mail SMTP
Самый известный и функциональный плагин для настройки SMTP. Позволяет подключать Gmail, Outlook, SendGrid и другие сервисы. Имеет удобный интерфейс и тестирование отправки.
Post SMTP Mailer/Email Log
Этот плагин не только настраивает SMTP, но и ведет лог отправленных писем, что помогает отследить проблемы.
Easy WP SMTP
Простой и легкий плагин, который подойдет для базовой настройки SMTP без излишних функций.
Пошаговая настройка SMTP с помощью WP Mail SMTP
Рассмотрим пример настройки SMTP через плагин WP Mail SMTP:
- Установите и активируйте плагин WP Mail SMTP через админку WordPress.
- Перейдите в WP Mail SMTP > Settings.
- В поле From Email укажите адрес отправителя, например
info@вашдомен.ru. - В поле From Name напишите имя отправителя — это будет отображаться в письмах.
- В разделе Mailer выберите SMTP.
- Введите данные SMTP-сервера: хост, порт, имя пользователя и пароль.
- Выберите тип шифрования (обычно SSL или TLS).
- Сохраните настройки и перейдите на вкладку Email Test.
- Отправьте тестовое письмо и убедитесь в успешной доставке.
Если вы используете Gmail, то потребуется настроить OAuth 2.0 для авторизации или включить доступ для менее безопасных приложений (не рекомендуется). Для других почтовых сервисов — используйте стандартные учетные данные SMTP.
Пример решения через код: настройка SMTP без плагинов
Если вы предпочитаете не использовать плагины, можно настроить SMTP прямо через functions.php вашей темы или в собственном плагине. Вот пример кода для подключения SMTP:
add_action('phpmailer_init', 'wpmail_phpmailer_smtp_settings');
function wpmail_phpmailer_smtp_settings($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.example.com'; // SMTP сервер
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587; // порт
$phpmailer->Username = 'user@example.com'; // имя пользователя
$phpmailer->Password = 'password'; // пароль
$phpmailer->SMTPSecure = 'tls'; // шифрование
$phpmailer->From = 'user@example.com';
$phpmailer->FromName = 'WP Mail';
}
Этот хук изменит стандартную конфигурацию PHPMailer, которую использует WordPress, и заставит ее работать через SMTP.
Отладка и проверка отправки почты
Если письма не приходят, выполните следующие шаги:
- Проверьте правильность данных SMTP (хост, порт, логин, пароль, шифрование).
- Убедитесь, что на сервере не заблокированы исходящие SMTP-соединения.
- Включите логирование писем с помощью плагина Post SMTP Mailer или добавьте логирование в код.
- Используйте сервисы проверки SMTP-соединения, например telnet или специальные утилиты.
- Проверьте папку «Спам» у получателя.
Дополнительные советы по улучшению доставки почты в WordPress
Для повышения вероятности успешной доставки и попадания в основной ящик рекомендуются следующие действия:
- Используйте доменные SPF, DKIM и DMARC-записи — они подтверждают легитимность отправителя.
- Не отправляйте письма с адресов общедоступных почтовых сервисов (gmail.com, yandex.ru и т.п.), лучше использовать собственный домен.
- Регулярно проверяйте логи отправки и исправляйте ошибки.
- Используйте специализированные SMTP-сервисы (SendGrid, Mailgun, Amazon SES) для больших объемов рассылок.
Настройка SMTP — это важный шаг в обеспечении качества работы сайта на WordPress, особенно если вы используете формы обратной связи, подписки и уведомления.