Письма с сайта на WordPress чаще всего не уходят или попадают в спам потому, что WordPress по умолчанию отправляет их через PHP-функцию mail() хостинга, без авторизации на почтовом сервере и без подписи домена. Решение: подключить отправку через SMTP настоящего почтового ящика, прописать у домена записи SPF, DKIM и DMARC и проверить доставку тестовым письмом.
Типичная картина выглядит так. Сайт работает, форма обратной связи показывает «Спасибо, ваша заявка отправлена», а менеджер ничего не получает. Иногда письма доходят, но лежат в спаме у половины получателей. Иногда всё работало годами и перестало после переезда на другой хостинг или смены почты. Владелец узнаёт о проблеме от клиента, который звонит и спрашивает, почему ему не ответили на заявку неделю назад. К этому моменту потеряно уже несколько обращений, и никто не может сказать, сколько именно.
Почему письма с сайта WordPress не уходят
Главная причина в том, как WordPress отправляет почту без дополнительных настроек. Вся почта сайта (заявки из форм, восстановление пароля, уведомления WooCommerce о заказах) проходит через функцию wp_mail(). Внутри она использует библиотеку PHPMailer, и если ничего не настроено, PHPMailer передаёт письмо стандартной функции PHP mail(), то есть почтовой программе самого хостинга.
У такого способа три слабых места.
- Письмо уходит с IP-адреса веб-сервера, а не с почтового сервера вашего домена. На shared-хостинге с одного адреса шлют сотни чужих сайтов, и если хоть один из них рассылал спам, адрес попадает в чёрные списки.
- Письмо не подписано ключом DKIM вашего домена, а IP хостинга часто не указан в записи SPF. Для Gmail, Яндекса и Mail.ru это письмо от неизвестного отправителя, которое выдаёт себя за ваш домен.
- Многие хостинги ограничивают или полностью отключают mail(), чтобы с их серверов не шёл спам. Тогда письмо не уходит вообще, а сайт об этом не сообщает.
Есть ещё одна деталь, которая сбивает с толку. В документации WordPress к функции wp_mail() прямо сказано: если функция вернула true, это не значит, что получатель письмо получил. Это значит только, что метод отправки принял запрос без ошибок. Поэтому надпись «Заявка отправлена» на сайте ничего не говорит о доставке.
Отдельная ловушка связана с адресом отправителя. Если форма или плагин не задают адрес «От кого», WordPress подставляет wordpress@ваш-домен. Та же документация предупреждает, что некоторые хостинги блокируют исходящую почту с этого адреса, если такого ящика не существует. В итоге письма молча теряются у тех, у кого ящика wordpress@ нет, то есть почти у всех.
Что такое SMTP и почему он решает проблему
SMTP — это протокол, по которому почтовые программы передают письма почтовому серверу. Когда вы настраиваете SMTP в WordPress, сайт перестаёт отдавать письма хостингу и отправляет их так же, как почтовый клиент на компьютере сотрудника: заходит на почтовый сервер вашего домена (Яндекс 360, Google Workspace, Mail.ru для бизнеса, корпоративный сервер) с логином и паролем, и уже этот сервер доставляет письмо адресату.
Что это меняет на практике:
- письмо уходит с сервера, у которого хорошая репутация и который прописан в SPF вашего домена;
- почтовый сервис подписывает письмо DKIM-ключом домена, если подпись у него включена;
- письмо остаётся в папке «Отправленные» ящика, и его можно найти, если клиент говорит, что ответа не было;
- ошибка авторизации или отказ сервера видны сразу, их можно поймать и записать в журнал.
По нашему опыту на проектах B2BPRO.KZ, после переезда сайта или смены хостинга проблемы с почтой всплывают чаще, чем с любой другой частью сайта. Причина обычно одна: раньше хостинг как-то отправлял mail(), новый не отправляет, а SMTP никто не настраивал.
Как настроить SMTP в WordPress: пошаговая инструкция
Настройка SMTP в WordPress занимает 20-40 минут, если доступ к почте и DNS домена у вас под рукой. Самый распространённый инструмент — бесплатный плагин WP Mail SMTP в каталоге WordPress.org, у него больше 4 миллионов активных установок. В бесплатной версии есть вариант «Other SMTP» для любого почтового сервиса с SMTP, готовые подключения к Gmail, Brevo, Mailgun, SendGrid, Postmark и другим сервисам, а также отправка тестового письма. Журнал отправленных писем в этом плагине доступен только в платной версии Pro.
Порядок действий на примере ящика в Яндекс 360, который часто используют компании в Казахстане:
- Заведите отдельный ящик для сайта, например site@ваш-домен.kz или noreply@ваш-домен.kz. Личный ящик директора или менеджера для этого не подходит: сотрудник уйдёт, пароль сменят, и почта сайта встанет.
- В настройках почтового ящика включите доступ по протоколу IMAP и разрешите пароли приложений. Затем создайте пароль приложения в Яндекс ID. Обычный пароль от ящика для подключения сайта не подойдёт.
- Установите плагин WP Mail SMTP и в мастере настройки выберите «Other SMTP».
- Заполните поля: сервер smtp.yandex.ru, шифрование SSL, порт 465, логин — полный адрес ящика, пароль — пароль приложения. Эти параметры указаны в справке Яндекс 360 о настройке почтовых программ. Если соединение без шифрования, Яндекс предлагает порт 587.
- В поле «From Email» укажите тот же адрес, с которого идёт авторизация, и включите опцию принудительной подстановки адреса, чтобы формы и плагины не подменяли отправителя.
- В поле «From Name» напишите название компании: так письмо будет узнаваемо в списке входящих.
- Откройте раздел инструментов плагина, отправьте тестовое письмо на внешний ящик (Gmail и Mail.ru) и проверьте, в какую папку оно попало.
Для Google Workspace и Microsoft 365 логика та же, только вместо логина и пароля удобнее использовать встроенные подключения через OAuth. Для Microsoft 365 в WP Mail SMTP это доступно в платной версии. Если у компании свой почтовый сервер, параметры SMTP даст администратор или поддержка хостинга.
Чем отличаются способы отправки почты с сайта
Выбор способа зависит от объёма писем и от того, что это за письма: заявки менеджерам или массовые уведомления клиентам магазина. Ниже сравнение вариантов, которые мы встречаем чаще всего.
| Способ | Как работает | Когда подходит | Слабые места |
|---|---|---|---|
| PHP mail() хостинга (по умолчанию) | Письмо отдаётся почтовой программе веб-сервера | Практически никогда для рабочего сайта | Общий IP, нет DKIM, хостинг может отключить |
| SMTP корпоративной почты | Сайт авторизуется в ящике домена и отправляет через него | Заявки с форм, уведомления сотрудникам, небольшой поток писем клиентам | Лимиты ящика на число писем, зависимость от пароля приложения |
| Сервис транзакционных писем (Mailgun, SendGrid, Postmark, Brevo и др.) | Сайт отправляет через API или SMTP сервиса | Интернет-магазины, личные кабинеты, сотни и тысячи писем в день | Нужно подтвердить домен и следить за тарифом сервиса |
Для сайта услуг с формой заявки хватает SMTP корпоративного ящика. Магазину на WooCommerce, который шлёт клиентам подтверждения заказов, статусы доставки и письма о восстановлении пароля, лучше сразу брать специализированный сервис: у почтовых ящиков есть суточные лимиты, и при всплеске заказов письма начнут отклоняться.
Какие DNS-записи нужны: SPF, DKIM и DMARC
Без записей SPF, DKIM и DMARC даже письма через SMTP могут уходить в спам, потому что получатель не может проверить, что ваш домен разрешил эту отправку. Эти записи прописываются в DNS домена, там же, где A-запись сайта: у регистратора или в панели хостинга.
SPF — это TXT-запись домена со списком серверов, которым разрешено отправлять почту от его имени. Если вы отправляете через Яндекс 360, в SPF должен быть указан Яндекс; если параллельно работает сервис рассылок, его тоже нужно добавить в ту же запись. Частая ошибка: две отдельные SPF-записи у одного домена. Так делать нельзя, всё объединяется в одну строку.
DKIM — это цифровая подпись письма, открытый ключ которой опубликован в DNS домена. Почтовый сервис подписывает каждое письмо, а получатель сверяет подпись с ключом. Ключ генерируется в панели почтового сервиса, а вы копируете его в DNS как TXT-запись.
DMARC — это TXT-запись, которая говорит получателям, что делать с письмами, не прошедшими проверку SPF и DKIM, и куда присылать отчёты. Для начала достаточно политики p=none: письма не блокируются, но вы получаете отчёты и видите, кто отправляет почту от имени домена.
Требования Google к отправителям касаются и сайтов. Согласно требованиям Google к отправителям писем на Gmail, всем отправителям нужна хотя бы одна из проверок SPF или DKIM, корректная обратная DNS-запись (PTR) для отправляющих доменов или IP, передача по TLS и доля спама в Postmaster Tools ниже 0,3%. Тем, кто отправляет больше 5000 писем в день, нужны и SPF, и DKIM одновременно, запись DMARC (политика может быть none) и совпадение домена в поле «От кого» с доменом SPF или DKIM. Сайт с формой заявок до этого порога не дотягивает, но интернет-магазин с рассылками может.
Как проверить доставку писем с сайта
Проверять доставку нужно в три приёма: тестовое письмо из плагина, реальная заявка через форму и разбор заголовков полученного письма. Только тестового письма мало: оно идёт с настройками плагина, а форма может подставлять свои.
- Отправьте тестовое письмо из WP Mail SMTP на ящики в Gmail, Яндексе и Mail.ru. Если в каком-то из них письмо попало в спам, проблема почти всегда в DNS-записях домена.
- Заполните форму на сайте так, как это сделал бы клиент, и дождитесь письма у менеджера. Проверьте, что пришли все поля формы и что «Ответить» отправляет ответ клиенту, а не на служебный ящик сайта.
- Откройте полученное письмо в Gmail, выберите «Показать оригинал». Gmail покажет результаты проверок SPF, DKIM и DMARC. У всех трёх должно стоять PASS.
- Если ящик менеджера на другом домене или в другом сервисе, повторите проверку и там: у разных почтовых систем разные фильтры.
- Через неделю загляните в папку «Отправленные» ящика сайта и сравните число писем с числом заявок в аналитике или в CRM. Расхождение покажет, теряются ли письма до SMTP.
Для постоянного контроля нужен журнал отправки. Если платная версия плагина не нужна, разработчик может повесить обработчик на хук wp_mail_failed: WordPress вызывает его при любой ошибке PHPMailer, и ошибку можно записать в файл или отправить в мессенджер администратору.
Почему письма с формы уходят в спам, хотя SMTP настроен
Если SMTP работает, а письма всё равно в спаме, чаще всего виноват адрес отправителя или содержимое письма.
- Форма ставит в поле «От кого» адрес клиента из заявки, например ivanov@gmail.com. Сайт отправляет письмо через ваш SMTP, но от имени домена gmail.com, и проверку DMARC такое письмо не проходит. Правильно: «От кого» — ящик сайта, а адрес клиента в поле «Ответить» (Reply-To).
- Плагин формы переопределяет адрес отправителя поверх настроек SMTP. Включённая опция принудительного адреса в WP Mail SMTP это лечит.
- В SPF домена нет почтового сервиса, через который идёт отправка, или записей SPF две.
- DKIM сгенерирован в панели почты, но запись в DNS не добавлена или добавлена с ошибкой в имени.
- Письмо состоит из одной ссылки или из спам-формулировок, которые оставили боты, заполнившие форму. Здесь нужна защита формы от спама, а не почтовые настройки.
Последний пункт встречается чаще, чем кажется. Если боты отправляют через форму сотни заявок с мусорными ссылками, почтовый сервис начинает считать ваш ящик источником спама, и под фильтр попадают уже и настоящие заявки. Как закрыть форму от ботов и не терять заявки, мы подробно описали в статье о формах на сайте и потере заявок.
Как не зависеть от почты в приёме заявок
Самая надёжная схема: письмо остаётся уведомлением, а сама заявка сохраняется отдельно. Почта может не дойти по десятку причин, и ни одна из них не видна владельцу сайта, пока не позвонит недовольный клиент.
Варианты подстраховки, от простого к основательному:
- сохранение заявок в базе сайта (многие плагины форм это умеют или делают через дополнение), чтобы любую заявку можно было найти в админке;
- дублирование уведомлений в мессенджер через бота;
- передача заявки сразу в CRM, где она становится лидом с ответственным и сроком реакции.
Для компании, у которой продажи идут через сайт, третий вариант окупается быстрее всего: заявка не может потеряться в чьём-то ящике, а руководитель видит, сколько обращений пришло и сколько обработано. Если сайт старый и проще переделать формы целиком, чем латать каждую, это можно включить в разработку сайта под ключ вместе с настройкой почты и интеграцией с CRM.
Частые ошибки при настройке почты WordPress
Большинство поломок почты происходит не при первой настройке, а через месяцы, когда что-то меняется вокруг сайта.
- Почту привязали к личному ящику. Сотрудник уволился, ящик удалили или сменили пароль, и сайт перестал отправлять письма. Используйте отдельный служебный ящик.
- Пароль приложения отозвали. Если в Яндекс ID или Google кто-то почистил список паролей приложений, сайт теряет доступ. Запишите, для чего создан каждый пароль.
- Почтовый сервис сменили, а DNS не поправили. Компания переехала с одной почты на другую, MX-записи поменяли, а SPF и DKIM остались старые.
- На сайте стоят два плагина SMTP одновременно. Они перехватывают отправку друг у друга, и результат непредсказуем. Должен остаться один.
- Почту никто не проверяет после обновлений. После крупного обновления темы, плагина формы или переезда хостинга отправьте тестовую заявку.
Хорошая практика для бизнеса в Казахстане и не только: раз в месяц отправлять контрольную заявку через каждую форму сайта, включая формы на посадочных страницах под рекламу. Реклама в Google или Яндексе может приводить заявки неделями, а форма на отдельном лендинге часто настроена иначе, чем на главной, и ломается отдельно.
Пример: как выглядит диагностика на реальном сайте
Ниже иллюстрация типичного случая, собранная из нескольких похожих ситуаций. Компания из Алматы перенесла сайт на WordPress на новый хостинг. Через две недели отдел продаж заметил, что заявок с сайта стало заметно меньше, хотя реклама работала как прежде.
Проверка заняла около часа. Форма на сайте показывала сообщение об успешной отправке. На новом хостинге функция mail() была отключена, а SMTP никогда не настраивали: на старом хостинге mail() работал, и этого хватало. Адрес отправителя в форме стоял wordpress@домен, такого ящика не существовало. SPF у домена указывал только старый хостинг.
Исправление: служебный ящик в корпоративной почте, пароль приложения, WP Mail SMTP с принудительным адресом отправителя, исправленная запись SPF, включённый DKIM и DMARC с политикой none. После этого тестовые письма во все три почтовые системы пришли во «Входящие» с PASS по всем проверкам. Заявки за две недели простоя восстановить не удалось: форма их нигде не сохраняла. Поэтому к форме добавили сохранение в базу и передачу в CRM.
Частые вопросы
Почему форма пишет «Сообщение отправлено», а письмо не приходит?
Сообщение на сайте означает только, что WordPress передал письмо дальше без ошибки, а не что его получили. По умолчанию письмо уходит через функцию mail() хостинга, которую хостинг может отключить или которую почтовые сервисы отправляют в спам. Надёжное решение: настроить отправку через SMTP служебного ящика и проверить доставку тестовой заявкой.
Можно ли настроить SMTP в WordPress без плагина?
Да, можно. Разработчик может настроить PHPMailer через хук phpmailer_init в файле темы или отдельном плагине и указать сервер, порт, логин и пароль. Но пароль тогда лежит в коде, и менять настройки сможет только программист, поэтому для большинства компаний плагин практичнее.
Какой порт указывать для SMTP: 465 или 587?
Порт зависит от почтового сервиса, его нужно брать из справки этого сервиса. Для Яндекс 360 официальная справка указывает сервер smtp.yandex.ru, шифрование SSL и порт 465, а порт 587 для подключения, которое начинается без шифрования. Если хостинг блокирует один из портов, попробуйте второй или уточните ограничения у поддержки хостинга.
Нужны ли SPF, DKIM и DMARC маленькому сайту с одной формой?
Да, нужны, хотя бы SPF и DKIM. Gmail требует от всех отправителей проходить хотя бы одну из этих проверок, а без них письма с сайта часто попадают в спам у получателей. Запись DMARC с политикой none ничего не блокирует, но присылает отчёты и помогает заметить, если кто-то рассылает письма от имени вашего домена.
Сколько писем в день можно отправлять через SMTP корпоративного ящика?
Точный лимит зависит от почтового сервиса и тарифа, его указывают в справке сервиса. Для заявок с формы сайта лимитов обычного ящика хватает с запасом. Если сайт отправляет клиентам подтверждения заказов, рассылки или письма личного кабинета сотнями в день, надёжнее подключить сервис транзакционных писем, рассчитанный на такой объём.
