SMTP в WordPress: отправка писем, и почему они не приходят

Практическая проверка SMTP в WordPress: от стандартного wp_mail() до SMTP-сервера, авторизации, DNS и доставляемости письма.

WordPress может корректно принять форму, создать заказ WooCommerce или сбросить пароль — и при этом письмо так и не дойдёт до получателя.

Это одна из самых неприятных ситуаций: сайт вроде бы работает, ошибок на странице нет, но уведомления исчезают где-то между WordPress и почтовым ящиком.

Причина в том, что сам факт успешного вызова wp_mail() ещё не означает доставку письма. Официальная документация WordPress прямо уточняет: true означает лишь, что используемый механизм смог обработать запрос без ошибки; это не подтверждает получение письма адресатом.

Поэтому проверять почту в WordPress лучше по цепочке:

WordPress создал письмо → сервер смог его отправить → SMTP принял его → домен прошёл проверки → принимающий сервер не отклонил письмо → письмо попало во входящие, а не в спам.

Сначала определите, что именно не работает

Не начинайте сразу с установки нескольких SMTP-плагинов.

Сначала ответьте на несколько вопросов:

  • какие именно письма не приходят;
  • не приходят все письма или только письма одного плагина;
  • проблема у одного получателя или у всех;
  • письма попадали в спам;
  • раньше всё работало;
  • менялись ли хостинг, DNS, домен или почтовый сервис;
  • есть ли сообщение об ошибке.

Например, совершенно разные ситуации:

Contact Form 7 показывает «Сообщение отправлено», но письма нет.

и

WP Mail SMTP выдаёт Authentication failed.

В первом случае ещё неизвестно, где потерялось письмо. Во втором уже понятно, что нужно исследовать SMTP-подключение.

↑ К оглавлению

1. Как WordPress отправляет письма

Большинство плагинов WordPress не подключаются самостоятельно к Gmail, Яндекс Почте или другому почтовому серверу.

Они вызывают стандартную функцию WordPress:

wp_mail()

Дальше WordPress передаёт отправку своему почтовому механизму.

Важно понимать: если wp_mail() вернул успешный результат, это не является подтверждением доставки. WordPress прямо предупреждает об этом в документации.

форма обработана
↓
wp_mail() сработал
↓
письма во входящих нет

Такая ситуация вполне возможна.

↑ К оглавлению

2. Зачем нужен SMTP

SMTP — протокол, через который почтовые серверы передают исходящие письма.

Практический смысл для WordPress простой: вместо попытки отправить письмо стандартным серверным механизмом сайт авторизуется у конкретного почтового сервиса.

WordPress
↓
WP Mail SMTP
↓
SMTP-сервер
↓
почтовый сервер получателя
↓
Входящие / Спам / отклонение

Это позволяет явно задать:

  • SMTP-сервер;
  • порт;
  • шифрование;
  • авторизацию;
  • имя пользователя;
  • пароль;
  • адрес отправителя.

И главное — при ошибке SMTP обычно можно получить более понятную причину, чем просто «письмо не пришло».

↑ К оглавлению

3. Что делает WP Mail SMTP

Для проверки мы использовали актуальный WP Mail SMTP 4.9.0.

Плагин позволяет отправлять почту через разные mailer-подключения, включая специализированные API-сервисы и обычный SMTP.

В интерфейсе доступны, среди прочих:

  • SendLayer;
  • SMTP.com;
  • Brevo;
  • Elastic Email;
  • Google/Gmail;
  • Mailgun;
  • Mailjet;
  • MailerSend;
  • Postmark;
  • Resend;
  • SendGrid;
  • SMTP2GO;
  • SparkPost;
  • Other SMTP / Прочие SMTP.

Для обычного почтового сервера нас интересует именно Прочие SMTP.

Официальная документация WP Mail SMTP отдельно предупреждает, что вариант Other SMTP хранит почтовые credentials в WordPress и считается менее предпочтительным по безопасности, чем некоторые API-mailer'ы.

↑ К оглавлению

4. Как настроить Other SMTP

В WP Mail SMTP настройка может проходить через Setup Wizard, а после настройки параметры доступны в обычном интерфейсе плагина.

В мастере Прочие SMTP мы увидели следующие поля:

  • SMTP сервер;
  • Шифрование;
  • SMTP порт;
  • Аутентификация;
  • Имя пользователя SMTP;
  • Пароль SMTP;
  • Имя отправителя;
  • Принудительно использовать имя отправителя;
  • Адрес отправителя;
  • Принудительно использовать адрес отправителя.

В обычных настройках дополнительно доступен Auto TLS.

То есть мастер первоначальной настройки и постоянная страница настроек немного отличаются по интерфейсу — это нормально.

↑ К оглавлению

5. SMTP Host, порт и шифрование

Эти параметры нельзя придумывать.

Их нужно брать у вашего почтового провайдера или хостинга.

Типичная конфигурация выглядит примерно так:

SMTP Host: smtp.example.com
Encryption: TLS
Port: 587
Authentication: On

Но это только пример.

У конкретного сервиса могут использоваться другие серверы и порты.

В WP Mail SMTP доступны варианты:

  • без шифрования;
  • SSL;
  • TLS.

В мастере при выборе TLS плагин может предложить порт 587, но ориентироваться нужно на документацию именно вашего SMTP-провайдера.

В постоянных настройках также есть Auto TLS — автоматическая попытка использовать TLS, если сервер это поддерживает.

↑ К оглавлению

6. Логин и пароль SMTP

Если включена Аутентификация, SMTP-сервер ожидает credentials.

Обычно это:

SMTP Username
SMTP Password

Частая ошибка — предполагать, что SMTP Username всегда равен адресу сайта или логину WordPress.

Это не обязательно так.

У разных провайдеров username может быть:

  • полный email;
  • отдельный SMTP login;
  • технический пользователь;
  • API-generated credential.

Пароль также может отличаться от обычного пароля почтового ящика.

Например, некоторые сервисы требуют отдельный app password.

Если сервер отвечает ошибкой authentication failed, первым делом сверяйте credentials с документацией почтового сервиса, а не меняйте WordPress.

↑ К оглавлению

7. From Email и From Name

WP Mail SMTP позволяет задать:

  • Имя отправителя;
  • Адрес отправителя.

И принудительно использовать их для писем сайта.

Например:

From Name:
WebFixer24

From Email:
site@example.com

Это важнее, чем кажется.

Почтовый сервис может разрешать отправку только от подтверждённого адреса или домена.

Если SMTP авторизуется как:

mailer@example.com

а WordPress пытается отправлять как:

random@gmail.com

провайдер может:

  • заменить отправителя;
  • отклонить письмо;
  • ухудшить доставляемость.

WP Mail SMTP и его mailer-документация регулярно требуют, чтобы From Email соответствовал проверенному sending domain.

↑ К оглавлению

8. Как отправить тестовое письмо

После настройки не ждите новую заявку с сайта.

Откройте:

WP Mail SMTP → Инструменты → Проверка почты

Укажите адрес, к которому у вас есть доступ, и отправьте тест.

Официальная документация WP Mail SMTP использует именно этот тест как стандартную проверку подключения.

Но проверять нужно два результата:

  • WP Mail SMTP сообщил об успешной отправке.
  • Письмо действительно появилось в почтовом ящике.

Это не одно и то же.

↑ К оглавлению

9. Если SMTP authentication failed

Такое сообщение уже сильно сужает поиск.

Проверьте:

  • SMTP Username.
  • SMTP Password.
  • Требуется ли app password.
  • Разрешён ли SMTP-доступ у аккаунта.
  • Не поменялся ли пароль.
  • Правильный ли SMTP Host.
  • Тот ли порт используется.

После исправления не проверяйте сайт только визуально.

Повторите Email Test.

Если тест заработал — затем проверьте реальное письмо того плагина, который раньше не отправлял уведомления.

↑ К оглавлению

10. Если соединение с SMTP не устанавливается

Если ошибка возникает ещё до авторизации, смотрите в сторону подключения.

Например:

Connection timed out
Could not connect to SMTP host
Connection refused

Проверяйте:

  • hostname;
  • порт;
  • SSL/TLS;
  • DNS;
  • firewall;
  • ограничения хостинга;
  • доступность SMTP-сервера.

Отдельная классическая проблема — хостинг блокирует исходящие SMTP-соединения.

В таком случае сколько угодно правильный пароль ситуацию не исправит.

Нужно определить:

сервер вообще может установить TCP-соединение с SMTP или нет.

↑ К оглавлению

11. Если тест успешный, а письмо не приходит

Очень важная развилка.

Если WP Mail SMTP сообщает:

Email sent successfully

но письма нет, не продолжайте менять SMTP Host и пароль наугад.

SMTP-передача уже могла пройти успешно.

Дальше проверяйте:

  • Спам;
  • карантин почтового сервера;
  • адрес получателя;
  • правила фильтрации;
  • SPF;
  • DKIM;
  • DMARC;
  • репутацию домена/IP;
  • журнал почтового провайдера.

И снова помним правило WordPress: успешная отправка на уровне wp_mail() не гарантирует получение адресатом.

↑ К оглавлению

12. SPF, DKIM и DMARC

SMTP-настройки могут быть идеально правильными, а письма всё равно будут регулярно попадать в спам.

Тогда нужно смотреть DNS-настройки отправляющего домена.

SPF

Показывает, какие серверы имеют право отправлять почту от имени домена.

DKIM

Добавляет криптографическую подпись письма, которую принимающий сервер может проверить.

DMARC

Определяет политику проверки домена и действия при проблемах с SPF/DKIM alignment.

WP Mail SMTP при Email Test умеет проверять DNS-записи sending domain; в зависимости от mailer это могут быть SPF, DKIM, DMARC и другие необходимые записи.

Важно: нужные значения DNS нужно брать у вашего почтового провайдера, а не копировать из чужой инструкции.

↑ К оглавлению

13. Почему письмо попадает в спам

Факт отправки через SMTP ещё не означает хорошую доставляемость.

Письмо может уйти в спам из-за:

  • отсутствующего SPF;
  • неправильного DKIM;
  • проблем с DMARC;
  • несовпадения From domain;
  • плохой репутации IP;
  • плохой репутации домена;
  • подозрительного содержания;
  • большого количества одинаковых сообщений;
  • жалоб получателей.

Поэтому диагностика:

SMTP работает

не заканчивается, пока вы не увидели реальное письмо.

↑ К оглавлению

14. Где смотреть ошибки WP Mail SMTP

Откройте:

WP Mail SMTP → Инструменты → События отладки

WP Mail SMTP записывает ошибки отправки в Debug Events. Дополнительно можно включить расширенную отладку отправки.

В документации плагина указано, что Debug Events предназначены именно для событий, связанных с отправкой почты, а не для всех PHP-ошибок сайта.

При диагностике полезны:

  • время ошибки;
  • источник;
  • текст ошибки;
  • компонент, пытавшийся отправить письмо.
14:32
Contact Form 7
SMTP authentication failed

намного полезнее, чем просто фраза пользователя:

«Письма иногда не приходят».

После завершения диагностики подробный debug лучше отключить. Это также рекомендует документация WP Mail SMTP.

↑ К оглавлению

15. Конфликт почтовых плагинов

Не устанавливайте одновременно несколько SMTP-плагинов «для надёжности».

Один плагин может менять wp_mail(), другой — PHPMailer, третий — From headers.

В результате диагностика становится только сложнее.

Проверьте список активных плагинов:

SMTP;
mail;
newsletter;
transactional email;
security;
snippets.

На нашем тестовом WordPress других SMTP/mail-плагинов не было — поэтому влияние второго mailer можно было сразу исключить.

↑ К оглавлению

16. Быстрый порядок диагностики

Если письма WordPress не приходят, идите так:

  1. Определите конкретное письмо, которое должно отправляться.
  2. Проверьте Spam.
  3. Установите и настройте один SMTP-механизм.
  4. Введите правильный SMTP Host.
  5. Проверьте SSL/TLS и порт.
  6. Проверьте Authentication.
  7. Проверьте Username/Password.
  8. Проверьте From Email.
  9. Отправьте Email Test.
  10. Если test failed — смотрите Debug Events.
  11. Если test successful, но письма нет — смотрите DNS и доставляемость.
  12. Проверьте SPF/DKIM/DMARC.
  13. После исправления вернитесь к исходному пользовательскому сценарию.

Например для магазина:

покупатель оформил заказ
↓
заказ создался
↓
WooCommerce инициировал email
↓
SMTP отправил письмо
↓
покупатель реально получил его

Вот только после последнего пункта проблему можно считать закрытой.

↑ К оглавлению

17. Главное

Когда WordPress пишет письмо, есть несколько совершенно разных уровней проблемы:

WordPress не создал письмо
↓
wp_mail() не смог обработать отправку
↓
SMTP не подключился
↓
SMTP не авторизовался
↓
SMTP принял письмо
↓
принимающий сервер отклонил письмо
↓
письмо принято, но попало в спам

Поэтому формулировка:

«WordPress не отправляет письма»

слишком широкая.

Нормальная диагностика начинается с вопроса:

на каком именно участке этой цепочки письмо исчезает?

↑ К оглавлению

18. Частые вопросы

Почему WordPress пишет, что письмо отправлено, но его нет?

Потому что успешный результат wp_mail() подтверждает обработку запроса на отправку, но не получение письма адресатом. Дальше нужно проверять SMTP, почтовый сервер, DNS и спам.

Какой SMTP-порт использовать в WordPress?

Используйте порт, указанный вашим SMTP-провайдером. Часто TLS работает через 587, но это не универсальное правило.

Что выбрать — SSL или TLS?

Следуйте документации конкретного почтового сервиса. В WP Mail SMTP доступны оба варианта; сам интерфейс рекомендует TLS для большинства серверов.

Что такое Auto TLS?

В обычных настройках Other SMTP это механизм автоматического использования TLS, если сервер его поддерживает.

Почему SMTP не принимает пароль?

Возможны неправильные credentials, необходимость app password, отключённая SMTP-аутентификация у почтового аккаунта или использование неправильного username.

Почему SMTP работает, а письма попадают в спам?

Тогда проверяйте SPF, DKIM, DMARC, From Email и репутацию отправляющего домена. WP Mail SMTP умеет выполнять domain checks во время тестовой отправки.

Где посмотреть ошибку отправки?

Откройте WP Mail SMTP → Инструменты → События отладки. По умолчанию плагин регистрирует ошибки отправки; при необходимости можно временно включить более подробную отладку.

Нужна помощь с настройкой почты WordPress?

Если после последовательной проверки причина остаётся неясной, можно обратиться за диагностикой WordPress.

↑ К оглавлению