Почему письма из WordPress не доходят через SMTP
Проблемы с отправкой писем через SMTP — частая головная боль разработчиков и администраторов WordPress-сайтов. Основные причины:
- Неправильные настройки SMTP (хост, порт, шифрование, авторизация);
- Блокировка сервера хостингом исходящих SMTP-соединений;
- Ошибка аутентификации (неверные логин/пароль);
- Использование неподдерживаемого SMTP-сервера (например, с нестандартной политикой безопасности);
- Отсутствие или неверные SSL-сертификаты;
- Конфликты плагинов, которые влияют на функцию wp_mail();
- Неправильная конфигурация PHP mail() или sendmail;
- Проблемы с DNS, SPF, DKIM и DMARC, которые приводят к блокировке писем на стороне получателя.
Диагностика проблем с SMTP в WordPress
1. Проверка логов ошибок SMTP
Если используется плагин SMTP (например, WP Mail SMTP, Post SMTP), в настройках обычно есть возможность включить логирование. Включите лог, отправьте тестовое письмо и изучите ошибки.
2. Проверка параметров SMTP
Подтвердите правильность настроек SMTP у провайдера почты. Для Gmail, например, это:
SMTP Host: smtp.gmail.com
SMTP Port: 587
Encryption: TLS
Authentication: да
Username: ваш_email@gmail.com
Password: app_passwordОбратите внимание, что для Gmail нужен пароль приложения, если включена двухфакторная аутентификация.
3. Проверка блокировки исходящих портов
На некоторых хостингах исходящие SMTP-соединения блокируются по умолчанию. Можно проверить с помощью команды SSH:
telnet smtp.gmail.com 587Если соединение не устанавливается — нужно обратиться в техподдержку хостинга.
4. Проверка функции wp_mail()
Напишите простой тестовый код и разместите в functions.php (затем удалите):
add_action('init', function() {
if (!wp_mail('youremail@example.com', 'Тест wp_mail', 'Проверка отправки')) {
error_log('Ошибка отправки почты wp_mail');
} else {
error_log('Письмо отправлено успешно');
}
});Проверьте логи сервера и подтвердите, что функция wp_mail вызывается и работает.
Пошаговое решение проблемы отправки писем через SMTP
Шаг 1. Установите и настройте плагин WP Mail SMTP
Этот плагин — стандарт для настройки SMTP в WordPress. После установки:
- Перейдите в WP Mail SMTP > Настройки;
- Выберите SMTP как метод отправки;
- Введите SMTP хост, порт, шифрование, имя пользователя и пароль;
- Сохраните настройки;
- Отправьте тестовое письмо из раздела плагина.
Шаг 2. Используйте пароль приложения, если это Gmail
Если используете Gmail или Google Workspace, создайте пароль приложения и используйте его вместо основного пароля.
Шаг 3. Проверьте поддержку SSL на сервере
Убедитесь, что на сервере установлен и работает OpenSSL, и PHP поддерживает расширение openssl. Без этого TLS-соединение не установится.
Шаг 4. Проверьте DNS-записи SPF, DKIM и DMARC
Для надежной доставки настройте SPF и DKIM-записи у вашего домена, чтобы письма не попадали в спам. Например, SPF-запись для Google выглядит так:
v=spf1 include:_spf.google.com ~allПроверка результата после внедрения
Для проверки:
- Отправьте тестовое письмо через плагин WP Mail SMTP;
- Проверьте папку «Входящие» на целевом почтовом ящике;
- Используйте онлайн-сервисы для проверки SMTP, например mail-tester.com;
- Просмотрите логи плагина SMTP и сервера;
- Тестируйте отправку с разных форм сайта.
Частые ошибки и как их исправить
- Ошибка аутентификации 535: Проверьте логин/пароль, используйте пароль приложения для Gmail;
- Не удается соединиться с SMTP сервером: проверьте блокировку портов на хостинге, используйте правильный порт и шифрование;
- Письма уходят в спам: настройте SPF, DKIM, DMARC, используйте правильный from-адрес;
- Плагин SMTP конфликтует с другим плагином: отключите другие почтовые плагины и проверьте снова;
- PHP не поддерживает OpenSSL: обратитесь к хостеру для включения расширения;
- Ошибка сертификата: убедитесь, что на сервере корректно настроено CA-сертификаты.
Практические советы по безопасности и производительности SMTP
- Используйте TLS/SSL для шифрования SMTP-сессии;
- Не храните пароли в открытом виде — используйте безопасные методы хранения;
- Регулярно обновляйте плагины и WordPress для защиты от уязвимостей;
- Ограничьте количество попыток отправки писем, чтобы избежать спама;
- Мониторьте логи SMTP для быстрого обнаружения проблем;
- Для больших объемов рассылок используйте специализированные сервисы (SendGrid, Mailgun) с их SMTP.
Сравнение способов отправки почты в WordPress
| Способ | Плюсы | Минусы | Пример плагина |
|---|---|---|---|
| PHP mail() | Простота, не требует настройки | Плохая доставка, часто спам | Без плагина |
| SMTP | Лучшее качество доставки, шифрование | Требует настройки, возможны блокировки хостингом | WP Mail SMTP, Post SMTP |
| API сторонних сервисов | Высокая надежность, аналитика | Сложность настройки, возможные тарифы | SendGrid, Mailgun плагины |