SMTP в WordPress настраиваю в первую очередь, когда клиент присылает жалобу: форма обратной связи на сайте вроде отправляется, а письмо на почту не приходит. Проверяю логи хостинга и вижу знакомую картину: WordPress пытается отправить письмо через встроенную функцию mail(), а сервер хостинга либо блокирует исходящий SMTP-трафик, либо письмо улетает в спам получателя из-за отсутствия SPF и DKIM записей у отправителя. За несколько лет работы с WordPress-проектами настраивал SMTP на десятках сайтов, от визиток на Contact Form 7 до интернет-магазинов на WooCommerce с оплатой через Т‑Банк и доставкой СДЭК. Разберу по шагам, как подключить SMTP-сервер, чтобы письма с форм и заказов доходили до адресата, а не терялись где-то между хостингом и почтовым ящиком клиента.
Почему письма из WordPress не доходят без SMTP
По умолчанию WordPress отправляет почту через функцию mail(), которая передает письмо локальному агенту хостинга, обычно sendmail или postfix. Проблема в том, что этот агент подписывает письмо от имени сервера хостинга, а не вашего домена. Почтовые сервисы вроде Gmail, Mail.ru и Яндекса проверяют совпадение отправителя с SPF-записью домена, и если сервер, с которого пришло письмо, не указан в SPF, письмо помечается подозрительным или сразу уходит в спам.
На практике сталкивался с такими симптомами:
- Письмо с формы обратной связи не приходит вообще, а в логах хостинга видна ошибка «550 relay not permitted» или «554 Message rejected»
- Письмо доходит, но попадает в папку «Спам», потому что нет DKIM-подписи
- WooCommerce показывает заказ оформленным, а клиент не получает письмо с подтверждением, потому что функция mail() отключена хостингом целиком
- Хостинги на shared-тарифах часто ограничивают число писем в час, обычно 100-300, и после лимита форма продолжает «отправляться», но письма просто не уходят
SMTP-подключение решает это, потому что письмо уходит через авторизованный сервер, у которого уже настроены SPF и DKIM записи и есть репутация у почтовых провайдеров.
Как настроить SMTP в WordPress через плагин WP Mail SMTP
Самый быстрый способ, которым пользуюсь на большинстве проектов, это плагин WP Mail SMTP. Он подменяет стандартную функцию wp_mail() на отправку через SMTP с авторизацией.
Порядок действий:
- Устанавливаю и активирую плагин WP Mail SMTP из каталога WordPress
- Захожу в раздел WP Mail SMTP → Settings
- В поле «From Email» указываю адрес на своем домене, например info@site.ru, а не на публичном почтовом сервисе
- В блоке Mailer выбираю «Other SMTP», это подходит для любого провайдера, включая Яндекс и Mail.ru, либо готовую интеграцию для Google Workspace
- Указываю SMTP Host, Port, тип шифрования SSL или TLS, логин и пароль от почтового ящика
- Сохраняю настройки и во вкладке Email Test отправляю тестовое письмо на реальный ящик
Пароль от обычного веб-интерфейса почты для SMTP чаще всего не подходит, если на ящике включена двухфакторная аутентификация. У Яндекса и Mail.ru для этого создается отдельный пароль приложения в настройках безопасности аккаунта, и именно его вставляю в поле пароля плагина.
Проверить, что wp_mail() вообще работает после настройки, можно и без интерфейса плагина, через WP-CLI:
wp eval 'wp_mail("test@example.com", "Проверка SMTP", "Письмо ушло через SMTP");'
Если письмо дошло, в консоли не будет ошибок, а на почте появится тестовое сообщение в течение минуты.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
SMTP-серверы Яндекс, Mail.ru и Timeweb: какие данные вводить
Для российских проектов чаще всего использую почту на своем домене через Яндекс 360 или Mail.ru для бизнеса, потому что это бесплатно на небольшом числе ящиков и не требует объяснять клиенту, зачем платить за Google Workspace, который к тому же периодически создает сложности с оплатой из России.
Параметры, которые обычно указываю в плагине:
| Провайдер | SMTP-хост | Порт | Шифрование |
|---|---|---|---|
| Яндекс 360 | smtp.yandex.ru | 465 | SSL |
| Mail.ru для бизнеса | smtp.mail.ru | 465 | SSL |
| Google Workspace | smtp.gmail.com | 587 | TLS |
| Timeweb, почта на хостинге | указан в панели хостинга | 465 или 587 | SSL/TLS |
Порт 465 использую, когда провайдер требует SSL сразу при подключении, порт 587 - когда нужен STARTTLS. Если хостинг блокирует исходящие соединения на нестандартные порты, а такое бывает на бюджетных shared-тарифах, это первое, что проверяю при ошибке «Connection timed out»: пишу в техподдержку хостинга с просьбой открыть исходящий 465 или 587 порт для IP-адреса почтового сервера.
SMTP для WooCommerce и уведомлений о заказах
На интернет-магазинах SMTP важен вдвойне, потому что через почту проходит вся коммуникация по заказу: подтверждение оформления, смена статуса на «Оплачен» после ответа от Т‑Банка, уведомление об отправке через СДЭК, чек. Если хотя бы одно из этих писем не доходит, клиент пишет в поддержку с вопросом, точно ли заказ прошел, и это прямая потеря доверия.
В WooCommerce письма настраиваются в разделе Настройки → Электронная почта, но сама доставка зависит от того, что указано в SMTP-плагине. Проверяю два момента: адрес отправителя должен совпадать с доменом, на котором стоит сайт, а ящик, через который уходит почта, не должен быть личным ящиком владельца бизнеса, потому что на личный часто настроены фильтры и подписи, которые ломают автоматические письма. Для таких задач обычно делаю отдельный технический ящик вроде orders@domain.ru и подключаю его через SMTP отдельно от общей почты компании.
Если магазин строится с нуля и нужно сразу свести оплату через Т‑Банк, доставку СДЭК и почтовые уведомления в одну рабочую схему, проще заказать настройку интернет-магазина под ключ, чем собирать это по частям самостоятельно.
Как проверить, что письма доходят, и разобрать частые ошибки SMTP
После настройки всегда прогоняю несколько тестов: отправляю письмо через кнопку Email Test в плагине, оформляю тестовый заказ в WooCommerce с реальным email и смотрю, куда письмо попало, во «Входящие» или в «Спам».
Из ошибок, с которыми сталкивался чаще всего:
- 535 5.7.8 Error: authentication failed - неверный логин или пароль, либо используется обычный пароль от почты вместо пароля приложения
- Connection timed out - хостинг блокирует исходящий порт, нужно писать в поддержку хостинга или переключаться на другой порт
- Could not instantiate mail function - плагин SMTP установлен, но настройки не сохранились, либо конфликтует другой плагин, тоже подменяющий wp_mail()
- Письмо доходит с задержкой в 10-15 минут - обычно проблема на стороне принимающего сервера, а не WordPress, особенно если получатель на корпоративной почте со своим спам-фильтром
Если тестовое письмо ушло без ошибок, но не появилось ни во «Входящих», ни в «Спаме» за 5 минут, проверяю раздел Email Log в плагине, он доступен и в бесплатной версии WP Mail SMTP, там видно, принял ли почтовый сервер письмо на своей стороне.
Что делать, если письма всё равно попадают в спам
SMTP-подключение убирает большинство проблем с доставкой, но не решает вопрос репутации домена целиком. Если после настройки письма продолжают падать в спам, проверяю три записи в DNS домена:
- SPF - должна включать сервер, через который реально отправляется почта, например include:_spf.yandex.ru для Яндекса
- DKIM - цифровая подпись письма, генерируется в панели почтового провайдера и добавляется отдельной TXT-записью
- DMARC - политика, которая говорит почтовым серверам, что делать с письмами, не прошедшими SPF и DKIM
Домен, с которого раньше вообще не отправляли почту, первое время имеет нулевую репутацию у почтовых провайдеров, и первые письма лучше отправлять не массово, а постепенно, буквально по 10-20 в день в первую неделю, если речь о рассылках, а не о единичных транзакционных письмах с форм.
Корпоративный сайт, каталог, блог
Фронтенд + Бэкенд
от 60 000 ₽
Подробнее →Частые вопросы
Какой SMTP-порт выбрать для WordPress?
Чаще всего использую 465 с шифрованием SSL или 587 с STARTTLS, оба варианта рабочие, разница в том, какой поддерживает конкретный почтовый провайдер. Яндекс и Mail.ru обычно требуют 465, Google Workspace по умолчанию работает через 587. Если оба порта дают ошибку подключения, скорее всего хостинг блокирует исходящий SMTP-трафик целиком, и нужно уточнять у техподдержки хостинга.
Можно ли использовать Gmail для SMTP в WordPress?
Технически да, через smtp.gmail.com и пароль приложения, но для проектов на российских доменах не советую делать Gmail основным способом доставки: бывают перебои с доступом к сервисам Google из России, и письма могут задерживаться или не отправляться вовсе. Для рабочей переписки и уведомлений с сайта лучше подходит Яндекс 360 или Mail.ru для бизнеса.
Почему письма из WooCommerce попадают в спам даже после настройки SMTP?
SMTP решает проблему авторизации отправителя, но не гарантирует репутацию. Если у домена нет SPF, DKIM и DMARC записей, или домен новый и почтовые провайдеры еще не доверяют ему, письма все равно могут помечаться подозрительными. Дополнительно проверяю тему и текст письма: слова вроде «бесплатно», «скидка 90%» и обилие восклицательных знаков в шаблоне уведомления сами по себе повышают спам-рейтинг.
Нужен ли плагин для SMTP или можно обойтись кодом?
Можно подключить SMTP и без плагина, через хук phpmailer_init в functions.php темы или через wp-config.php, но на практике для клиентских проектов использую плагин: настройки хранятся в базе, не теряются при обновлении темы, есть встроенное тестирование и лог отправленных писем. Код в functions.php оправдан, если делаю кастомную сборку и хочу минимизировать число плагинов на сайте.