Почему письма из WordPress не доходят или попадают в спам?
Одной из частых проблем владельцев сайтов на WordPress является неработающая отправка писем — например, уведомлений о заказах, восстановления пароля или подписках на рассылку. Это связано с тем, что по умолчанию WordPress использует функцию wp_mail(), которая опирается на PHP-функцию mail(). На многих хостингах она либо отключена, либо плохо настроена, что приводит к ошибкам или попаданию писем в спам.
Диагностика проблем с отправкой писем через SMTP
Проверяем базовую отправку писем
Для начала стоит проверить, работает ли вообще отправка писем из WordPress. Для этого можно использовать плагин Check Email или следующий код в файле functions.php темы:
add_action('admin_init', function() {
if (isset($_GET['test_email'])) {
$to = get_option('admin_email');
$subject = 'Тест письма WordPress';
$message = 'Если вы получили это письмо, значит отправка работает.';
wp_mail($to, $subject, $message);
exit('Письмо отправлено');
}
});Затем в браузере откройте https://your-site.ru/wp-admin/?test_email=1. Если письмо не пришло, проблема с отправкой есть.
Логирование ошибок SMTP
Если вы используете SMTP-плагин (например, WP Mail SMTP или Post SMTP), активируйте логирование, чтобы увидеть детальные ошибки подключения и аутентификации SMTP.
Пошаговое решение проблемы с отправкой писем через SMTP
1. Установка и настройка SMTP-плагина
Рекомендуется использовать плагин WP Mail SMTP, который заменяет стандартный механизм отправки писем на SMTP с аутентификацией и шифрованием.
- Установите плагин WP Mail SMTP через админпанель WordPress.
- Перейдите в настройки плагина (
WP Mail SMTP > Настройки). - Выберите почтовый сервис: SMTP-сервер вашего почтового провайдера (например, Gmail, Яндекс.Почта, или корпоративный SMTP).
- Впишите параметры SMTP:
- SMTP-сервер (например,
smtp.yandex.ru) - Порт (обычно 465 для SSL или 587 для TLS)
- Тип шифрования (SSL или TLS)
- Имя пользователя (полный email)
- Пароль (пароль от почтового ящика или специальный пароль приложений)
- SMTP-сервер (например,
- Сохраните настройки.
2. Проверка отправки тестового письма
В настройках плагина есть возможность отправить тестовое письмо. Убедитесь, что письмо успешно отправляется и приходит на указанный адрес.
3. Включение логирования SMTP
В разделе отладки плагина включите логирование. При ошибках смотрите логи, чтобы понять причину (например, неверный логин/пароль, блокировка порта, неправильный сертификат SSL).
4. Настройка SPF, DKIM и DMARC для домена
Чтобы письма не попадали в спам, важно правильно настроить DNS-записи:
- SPF — указывает, какие серверы имеют право отправлять письма от имени вашего домена.
- DKIM — цифровая подпись писем для проверки подлинности.
- DMARC — политика обработки писем, не прошедших SPF или DKIM.
Пример записи SPF (для Яндекс.Почты):
@ IN TXT "v=spf1 include:_spf.yandex.net ~all"Настройка DKIM и DMARC зависит от почтового провайдера и делается через панель управления DNS вашего домена.
Как проверить, что проблема решена
- Отправьте тестовое письмо через SMTP-плагин — оно должно успешно дойти.
- Проверьте папку «Спам» в почтовом ящике — письмо не должно туда попадать.
- Используйте сервисы проверки почты, например MXToolBox, для диагностики SPF, DKIM, DMARC.
- Проверьте логи SMTP-плагина на отсутствие ошибок.
Частые ошибки и как их исправить
Ошибка аутентификации SMTP
Причина: неверный логин или пароль, либо двухфакторная аутентификация не отключена или не настроен пароль приложений.
Решение: проверьте данные, создайте пароль приложений, если используете Gmail или Яндекс.
Ошибка соединения с сервером SMTP
Причина: заблокирован порт, неправильно указан сервер или порт, проблемы с SSL-сертификатом.
Решение: уточните настройки SMTP, попробуйте другой порт, проверьте возможность подключения через telnet:
telnet smtp.yandex.ru 465Письма попадают в спам
Причина: отсутствуют или неправильно настроены SPF/DKIM/DMARC записи, плохая репутация IP.
Решение: настройте DNS-записи, используйте проверенные SMTP-сервисы.
Практические советы для безопасности и производительности
- Не храните SMTP-пароли в открытом виде в файлах — используйте настройки плагинов с шифрованием.
- Ограничьте число попыток отправки писем, чтобы избежать спама с вашего сайта.
- Используйте специализированные SMTP-сервисы (SendGrid, Mailgun, Яндекс.Почта) для надежности и масштабируемости.
- Обновляйте плагины и WordPress для устранения уязвимостей в почтовой системе.
Сравнение способов отправки почты в WordPress
| Метод | Плюсы | Минусы | Пример плагина |
|---|---|---|---|
| PHP mail() | Простота, не требует настройки | Низкая надежность, письма часто идут в спам | Стандарт WordPress |
| SMTP с аутентификацией | Надежная доставка, поддержка шифрования | Требует настройки, возможны ошибки соединения | WP Mail SMTP, Post SMTP |
| API почтовых сервисов | Высокая скорость, аналитика доставки | Зависимость от сторонних сервисов, сложнее настроить | SendGrid API, Mailgun API |