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 не приходят, идите так:
- Определите конкретное письмо, которое должно отправляться.
- Проверьте Spam.
- Установите и настройте один SMTP-механизм.
- Введите правильный SMTP Host.
- Проверьте SSL/TLS и порт.
- Проверьте Authentication.
- Проверьте Username/Password.
- Проверьте From Email.
- Отправьте Email Test.
- Если test failed — смотрите Debug Events.
- Если test successful, но письма нет — смотрите DNS и доставляемость.
- Проверьте SPF/DKIM/DMARC.
- После исправления вернитесь к исходному пользовательскому сценарию.
Например для магазина:
покупатель оформил заказ
↓
заказ создался
↓
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.