Назад в блог
Разработка Опубликовано 16.09.2026 1 мин чтения

Когда контактная форма говорит «Спасибо», но почта не приходит

Контактная форма может сломаться без видимых ошибок: посетитель получает дружелюбное подтверждение, а Вы — ничего. Почему это происходит и как вовремя заметить.

Представьте небольшую физиотерапевтическую практику. На её сайте есть контактная форма, и она работает — или по крайней мере так кажется. Посетители заполняют её, нажимают «Отправить» и видят дружелюбное «Спасибо, мы скоро свяжемся с Вами». Чего никто не видит: сообщения уже некоторое время не доходят во входящие практики. Нет ошибки, нет возврата письма в чьём-либо ящике, нигде нет красного сигнала. Форма отказывает молча.

Почему никто не замечает

Страница «Спасибо» формы обычно означает лишь одно: сайт передал сообщение дальше. Примет ли его почтовый сервер, поместит в спам или отклонит по пути — происходит позже, вне поля зрения формы. Например, функция PHP mail() сообщает об успехе, как только локальная система приняла сообщение к доставке, а не когда оно кому-то дошло. Посетитель получает подтверждение и идёт дальше. Владелец тем временем видит пустые входящие и считает месяц просто тихим. Само по себе уменьшение обращений редко тревожит: праздники, погода, экономика — всегда находится объяснение правдоподобнее, чем «форма сломалась».

Гипотетическая хронология
  1. День 0
    Ночью выполняется обычное обновление плагина. Сайт выглядит как прежде.
  2. День 1
    Приходит последнее сообщение. Никто не знает, что оно последнее.
  3. Дни 2–13
    Посетители продолжают отправлять форму и видеть «Спасибо». Во входящие ничего не поступает.
  4. День 14
    Кто-то звонит и слегка раздражённо спрашивает, почему на его обращение никто так и не ответил.
  5. День 15
    Причину находят за час. Сообщения за две недели потеряны — если только форма не сохраняла копию.
Не реальный случай, но очень типичная картина.

Обычные причины

  • Изменились пароль SMTP или почтовый провайдер. Форма продолжает входить со старыми данными, а почтовый сервер отказывает — для посетителя молча.
  • PHP mail() без аутентификации. Веб-сервер отправляет почту напрямую, без входа на надлежащий почтовый сервер. Многие принимающие серверы считают такую почту подозрительной: она попадает в спам или сразу отклоняется.
  • SPF, DKIM и DMARC не согласуются. Многие формы помещают адрес посетителя в поле From. Тогда письмо утверждает, что пришло, скажем, с адреса gmail.com, но отправлено Вашим веб-сервером — именно это DMARC и призван останавливать.
  • Обновление плагина или смена темы ломает форму или её CAPTCHA. Изменённый шаблон убирает поле, скрипт перестаёт загружаться или виджет CAPTCHA появляется без скрипта — и каждая отправка не проходит валидацию.
  • Принимающий почтовый ящик переполнен. Сервер отказывает новым сообщениям, а возврат приходит на адрес, которого никто не читает.
  • Баннер cookie блокирует скрипт формы. Если инструмент согласия относит CAPTCHA или скрипт формы к «маркетингу», отказавшиеся от cookie посетители могут получить форму, которую нельзя отправить, либо отправки которой отклоняются из-за отсутствующего токена.
  • Истёкший сертификат TLS или домен. Посетители видят предупреждение браузера и уходят, либо к почтовому серверу больше нельзя безопасно подключиться. Если истекает домен принимающего ящика, почта на него просто прекращается.
  • Слой кеширования выдаёт устаревшие страницы. Полностраничный кеш может отдать форму с истёкшим токеном безопасности (nonce или CSRF). Сервер отклоняет отправку, а в зависимости от настройки посетитель не видит ясной ошибки.

Ловушка адреса From

Третья причина заслуживает внимания, поскольку во многих формах заложена по умолчанию. DMARC проверяет совпадение домена видимого адреса From с доменом, подтверждённым SPF или DKIM. Если форма отправляет письмо «от» адреса посетителя, Ваш сервер не уполномочен отправлять для этого домена, и проверка не проходит. В зависимости от политики DMARC домена посетителя и Вашего почтового провайдера письмо попадает в спам или отклоняется. Исправление простое: отправляйте с адреса собственного домена, а адрес посетителя ставьте в Reply-To. Нажатие «Ответить» по-прежнему адресует ответ посетителю.

Два способа отправить одно и то же сообщение формы
Ненадёжно
  • From: адрес посетителя
  • Без Reply-To
  • PHP mail() прямо с веб-сервера
  • Нет SPF, DKIM или DMARC для домена отправителя
  • Сообщение существует только как письмо
Надёжно
  • From: адрес на Вашем домене, например form@yourdomain
  • Reply-To: адрес посетителя
  • SMTP с аутентификацией или сервис отправки
  • SPF, DKIM и DMARC настроены и согласованы
  • Копия также хранится в базе данных
Правая колонка почти не требует больше работы — в основном это конфигурация.

Что делать

  1. 1Регулярно отправляйте тестовое сообщение через собственную форму — не реже раза в месяц и всегда после обновлений, смены темы или настроек почты. Ясно помечайте его как тест, чтобы никто не отвечал.
  2. 2Знайте обычный ритм. Если форма обычно приносит несколько сообщений в неделю, две недели тишины — повод проверить, а не просто тихий месяц.
  3. 3Отправляйте через SMTP с аутентификацией — через почтового провайдера или специальный сервис отправки — вместо надежды на PHP mail().
  4. 4Используйте свой домен в From, а адрес посетителя в Reply-To. Затем настройте SPF, DKIM и DMARC этого домена, чтобы письма проходили проверки.
  5. 5Храните копию каждой отправки в базе данных. Многие плагины форм предлагают это, иногда как дополнение. При сбое почты обращения сохраняются.
  6. 6Проверяйте форму после каждого обновления плагина, включая CAPTCHA, а также при отказе от cookie.

Такие проверки легко забыть, поэтому стоит их автоматизировать. С аккаунтом и подтверждённым доменом formexposed может отправить ясно обозначенную тестовую отправку и проверить её фактическое получение (проверка доставки, только с явным включением). Он также обнаруживает тишину — форма, обычно получающая сообщения, внезапно не получает ничего — и проверяет SPF, DKIM и DMARC писем уведомлений, а также сроки сертификата TLS и домена. Оповещение приходит только при изменении.

Если нужен лишь первый взгляд: бесплатная проверка на formexposed.com не требует аккаунта и ничего не отправляет. Среди прочего она показывает наличие неработающей CAPTCHA — виджета без скрипта, публичного тестового ключа, ошибок браузера — одного из незаметных способов прекращения работы формы. Реальное получение сообщений подтверждается только настоящим тестовым письмом, поэтому отправьте его сегодня.