WP Mail SMTP — настройка с нуля
Почему письма не доходят без SMTP
WordPress использует функцию wp_mail(), которая по умолчанию отправляет через mail() PHP. На большинстве хостингов — особенно Beget, Timeweb, Reg.ru — mail() либо отключён, либо письма уходят без SPF/DKIM и сразу падают в спам.
mail() не использует авторизацию — любой скрипт на сервере может отправить письмо от вашего имени. Хостинги блокируют её из-за спама. Даже если работает — письма не доходят до Gmail, Mail.ru и Яндекса.Три причины проблем с почтой WordPress:
- mail() заблокирован — хостинг отключил функцию (чаще всего на Beget и Timeweb её нет)
- Нет аутентификации — письма без SPF и DKIM выглядят как спам для почтовых серверов
- Лимиты отправки — shared-хостинг ограничивает количество писем в час, после блокировки mail() тишина на сутки
Как настроить WP Mail SMTP — пошагово
Шаг 1: Установка плагина WP Mail SMTP
Установите плагин через админку WordPress: Плагины → Добавить новый, поиск «WP Mail SMTP by WPForms». Установите и активируйте. Бесплатная версия подходит для большинства задач — поддерживает SMTP-отправку, тестовое письмо, логи ошибок.
После активации перейдите в Настройки → WP Mail SMTP. Откроется мастер настройки — его можно пропустить и настроить вручную на вкладке Mailer.
Шаг 2: Выбор SMTP-провайдера
В WP Mail SMTP доступно несколько вариантов. Бесплатная версия поддерживает:
- SMTP — любой внешний SMTP-сервер (Яндекс 360, Mail.ru, Beget, свой)
- Sendmail — через sendmail на сервере (не лучше mail())
Про версия добавляет Amazon SES, Mailgun, SendGrid, Postmark, SMTP.com, SparkPost, Google Workspace / Gmail API. Для российских проектов достаточно бесплатного SMTP через Яндекс 360 или Mail.ru.
Шаг 3: Настройка SMTP через Яндекс 360
- Заведите почтовый ящик на Яндекс 360 для своего домена: 360.yandex.ru/mail
- Создайте пароль приложения для SMTP: Яндекс ID → Безопасность → Пароли приложений
- В настройках WP Mail SMTP выберите Mailer → SMTP
- Заполните параметры SMTP:
SMTP Host: smtp.yandex.ru SMTP Port: 465 (SSL) Encryption: SSL Auto TLS: Off SMTP Authentication: On Username: ваш@домен.рф Password: пароль приложения (не основной!) - Сохраните настройки
Шаг 4: Настройка SMTP через Mail.ru для бизнеса
- Подключите домен в biz.mail.ru (бесплатно для 1 домена)
- Создайте почтовый ящик: admin@вашдомен.рф
- В WP Mail SMTP выберите Mailer → SMTP
- Заполните параметры:
SMTP Host: smtp.mail.ru SMTP Port: 465 (SSL) Encryption: SSL Auto TLS: Off SMTP Authentication: On Username: admin@вашдомен.рф Password: пароль от ящика Mail.ru
Шаг 5: Настройка SPF и DKIM
Без SPF и DKIM даже через SMTP письма могут попадать в спам. Добавьте в DNS-записи домена:
SPF-запись (TXT):
v=spf1 include:_spf.yandex.net ~all
Для Mail.ru:
v=spf1 include:mail.ru ~all
DKIM-запись (TXT):
Сгенерируйте DKIM-ключ в панели Яндекс 360 (Почта → Безопасность → DKIM) или Mail.ru для бизнеса. Скопируйте TXT-запись и добавьте в DNS. Обычно выглядит так:
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
dig txt вашдомен.рф или онлайн-сервисы MXtoolbox, DNSChecker.Проверка результата
В WP Mail SMTP есть встроенная проверка: Настройки → WP Mail SMTP → Email Test. Введите свой email и нажмите «Send Email».
Плагин покажет лог отправки — успешно или ошибка. Если письмо ушло — проверьте папку «Входящие» и «Спам». Если письмо не пришло — проверьте:
- Правильно ли указан порт (465 для SSL, 587 для TLS)
- Включена ли галочка Authentication
- Не блокирует ли хостинг исходящие соединения на порт 465
- Работает ли пароль приложения (на Яндексе — только пароль приложения, не основной)
Когда способ не сработает
1. Хостинг блокирует внешние SMTP-порты
Beget и некоторые тарифы Timeweb блокируют порты 25, 465, 587 для защиты от спама. Решение: обратитесь в поддержку — на Beget достаточно написать тикет «разблокируйте SMTP для домена», на Timeweb переключите тариф на VPS.
2. Письма всё равно в спаме
Если SPF и DKIM настроены, а письма в спаме — проверьте DMARC-политику (добавьте v=DMARC1; p=none сначала). Ещё причина: домен был в спам-базах из-за старого mail(). Письма могут идти 1-2 недели до полного доверия.
3. Нужно больше 7000 писем/день
WP Mail SMTP Pro + Amazon SES или Mailgun для массовых рассылок. Настройка сложнее — нужен API-ключ, верификация домена, Webhook для bounce-уведомлений.
4. Сайт на Reg.ru и почта там же
У Reg.ru своя почта на домене — можно не подключать внешний SMTP. Просто укажите SMTP-сервер Reg.ru в настройках: smtp.reg.ru:465 с логином и паролем от почтового ящика Reg.ru.
Частые вопросы
add_action('phpmailer_init', function($phpmailer) { $phpmailer->isSMTP(); $phpmailer->Host = 'smtp.yandex.ru'; $phpmailer->SMTPAuth = true; ... });Не отправляются письма? Настройка SMTP — моя работа
Настрою WP Mail SMTP, подключу Яндекс 360 или Mail.ru, проверю SPF/DKIM/DMARC — письма будут доходить в течение дня.