Сообщение «Не удалось отправить сообщение» (в английской версии «There was an error trying to send your message») Contact Form 7 показывает в двух разных случаях: когда WordPress не смог отправить письмо и когда защита от спама заподозрила отправку. Отличить их можно по цвету рамки вокруг сообщения: красная означает сбой почты, оранжевая означает срабатывание антиспама.
Владелец сайта обычно узнает о проблеме последним. Клиент заполнил форму, увидел ошибку, закрыл вкладку и позвонил конкуренту. Менеджеры замечают тишину через несколько дней, когда заявок с сайта становится подозрительно мало. Поэтому порядок действий ниже начинается с того, как быстро понять тип сбоя, а заканчивается тем, как сделать, чтобы заявка не терялась даже при следующей поломке.
Почему Contact Form 7 пишет «Не удалось отправить сообщение»
Причин у этой ошибки две, и разработчик плагина прямо пишет об этом в официальном FAQ Contact Form 7 о сообщении об ошибке отправки. Первая: настоящая проблема с почтой, письмо уйти не может. Вторая: отправку посчитали спамом. Текст одинаковый в обоих случаях, и это сделано специально: плагин не сообщает посетителю, что принял его за спамера, чтобы не подсказывать настоящим ботам и не обижать живых людей при ложном срабатывании.
Contact Form 7 — это бесплатный плагин форм для WordPress, который при отправке формы собирает введенные данные в письмо и передает его стандартной функции WordPress wp_mail(). Он не хранит заявки сам: если письмо не ушло, данные пропадают. Это важно для всего, что будет дальше.
Ошибку важно отличать от соседних симптомов, которые выглядят похоже, но лечатся иначе:
| Что видит посетитель | Что это значит | Где искать причину |
|---|---|---|
| Ошибка в красной рамке | wp_mail() не смог отправить письмо | Настройки письма в форме, почта хостинга, SMTP |
| Ошибка в оранжевой рамке | Сработал модуль защиты от спама | Akismet, reCAPTCHA, список запрещенных слов |
| Значок загрузки крутится, ничего не происходит | Обычно конфликт с другим плагином или темой | Плагины, тема, скрипты на странице |
| Зеленое «Спасибо, сообщение отправлено», но письма нет | Сайт отправил письмо, его потеряли дальше | Спам-фильтр почты, SPF и DKIM, логи почтового сервера |
| После отправки страница перезагружается, в адресе #wpcf7-f123-o1 | Форма работает без Ajax | JavaScript и REST API сайта |
Описания симптомов в таблице взяты из FAQ плагина. Цвета рамки зависят от темы: если тема переопределяет стили форм, рамка может выглядеть иначе. Тогда тип ошибки проще определить по проверке письма из следующих разделов.
Как понять, какая у вас ошибка: красная или оранжевая
Самый быстрый способ определить тип ошибки: отправить форму самому и посмотреть на цвет рамки, а потом повторить отправку с другими данными. Если ошибка повторяется всегда, проблема почти наверняка в почте. Если ошибка появляется только при некоторых текстах или у некоторых посетителей, это похоже на антиспам.
Порядок проверки, который занимает 5-10 минут:
- Откройте страницу с формой в режиме инкогнито, чтобы не мешали кэш браузера и вход в админку.
- Заполните форму простыми данными: обычное имя, рабочая почта, короткий текст без ссылок.
- Отправьте и посмотрите на рамку сообщения.
- Повторите отправку с другого устройства или через мобильный интернет: так вы исключите блокировку по вашему IP.
- Если на сайте подключена reCAPTCHA, проверьте, не появляется ли ошибка только на одном браузере или после долгого простоя страницы.
Если тема перекрасила рамки и цвет ничего не говорит, ориентируйтесь на повторяемость. Ошибка у всех и всегда указывает на почту. Ошибка у части посетителей, особенно с определенными словами в сообщении или с определенных сетей, указывает на антиспам.
Пример из типичной практики, условный: компания из Алматы жалуется, что заявки с сайта «иногда не доходят». Тест администратора проходит, а часть клиентов видит ошибку. В журнале спама выясняется, что блокируются сообщения с одного корпоративного IP-адреса: несколько лет назад его добавили в список запрещенных при борьбе со спамом в комментариях. Сайт исправен, почта исправна, а клиенты одного крупного заказчика не могут оставить заявку. Такие случаи без журнала ищутся неделями.
Красная рамка: что проверить в настройках письма
Красная рамка, по разъяснению разработчика о красной рамке, означает, что Contact Form 7 вызвал wp_mail(), но отправка не удалась. Причины две группы: неверно настроено само письмо или не работает почтовый сервер. С первой группой справится администратор сайта, со второй обычно нужен хостинг.
Начните с формы. В админке WordPress откройте раздел Contact Form 7, список контактных форм, нужную форму и вкладку «Письмо» (Mail). Проверьте по порядку:
- Поле «От кого» (From). Адрес должен быть на домене сайта, например info@вашдомен.kz. Если там стоит личный Gmail или адрес клиента из формы, многие серверы отклонят такое письмо как подделку. В рекомендациях Contact Form 7 по настройке письма это первый пункт.
- Адрес клиента. Почту посетителя ставьте не в «От кого», а в дополнительный заголовок Reply-To. Тогда менеджер нажмет «Ответить» и попадет к клиенту, а письмо при этом не выглядит поддельным.
- Поле «Кому». Проверьте, нет ли опечатки и существует ли ящик. После смены сотрудника адрес часто ведет в удаленный ящик.
- Предупреждения валидатора. Если над формой в редакторе висят желтые предупреждения о конфигурации, исправьте их. Валидатор сам по себе работу формы не останавливает, но показывает ошибки, из-за которых письма теряются.
- Адрес wordpress@вашдомен. По умолчанию плагин подставляет его в «От кого». Создайте такой ящик у хостинга или замените адрес на существующий: некоторые хостинги блокируют исходящие письма с несуществующего адреса.
Проверьте все формы сайта, а не только ту, на которую пожаловались. У каждой формы Contact Form 7 свои настройки письма, и на сайтах, которые собирали несколько подрядчиков, в одной форме адрес отправителя бывает правильным, а в соседней остается старый личный ящик бывшего маркетолога. Форма обратного звонка в шапке и форма на странице услуги часто оказываются разными формами с разными получателями.
Если с настройками все в порядке, а ошибка остается, значит, сервер не отправляет почту вообще. Проверить это просто: попросите сброс пароля для своего пользователя WordPress. Если письмо о сбросе тоже не пришло, проблема не в Contact Form 7, а в почте сайта целиком.
Почта сервера не работает: когда нужен SMTP
Если сервер не отправляет письма, надежнее всего перевести WordPress на отправку через SMTP, то есть через настоящий почтовый ящик на домене, а не через функцию mail() хостинга. Разработчик Contact Form 7 тоже советует в таких случаях использовать другой почтовый сервер.
SMTP — это протокол, по которому письмо передается через почтовый сервер с авторизацией: сайт входит в ящик по логину и паролю, как обычный почтовый клиент. Встроенная отправка через mail() часто отключена на дешевых тарифах, ограничена по количеству писем или попадает в черные списки, потому что с того же сервера шлют письма сотни других сайтов.
Пошаговую настройку SMTP-плагина и проверку доставки мы подробно описали в статье о том, почему письма с сайта WordPress не уходят, поэтому здесь только то, что касается именно Contact Form 7:
- адрес в поле «От кого» формы должен совпадать с ящиком, через который настроен SMTP, или быть на том же домене;
- после подключения SMTP отправьте тестовое письмо из настроек SMTP-плагина, а потом еще раз форму: если тест проходит, а форма нет, вернитесь к настройкам письма в форме;
- если почта домена работает через Яндекс 360, Google Workspace или почту хостинга, проверьте, что пароль приложения не истек и вход не заблокирован после смены пароля сотрудником.
Если письма уходят, но попадают в спам у получателя, дело уже в репутации домена. Тогда нужны записи SPF, DKIM и DMARC, их проверку мы разобрали в материале про SPF, DKIM и DMARC для почты компании.
Оранжевая рамка: форма приняла клиента за спам
Оранжевая рамка означает, что один из модулей защиты от спама заблокировал отправку. По FAQ плагина об оранжевой рамке, это может быть Akismet, reCAPTCHA или список запрещенных слов, и чтобы понять, какой именно модуль сработал, разработчик советует включить журнал спама.
Журнал спама работает в связке с бесплатным плагином Flamingo того же автора: заблокированные заявки попадают в его раздел входящих с пометкой «Спам», а рядом указана причина. По анонсу функции журнала спама, нужен Contact Form 7 версии 5.1.2 и выше и Flamingo 2.0 и выше. Без журнала искать виновника приходится перебором.
Что чаще всего вызывает ложные срабатывания:
- reCAPTCHA v3. Она работает без галочки «Я не робот» и оценивает поведение посетителя баллом. Если ключи выпущены для другого домена, для версии v2 или сайт переехал на новый адрес, проверка не проходит. В инструкции Contact Form 7 по reCAPTCHA отдельно сказано, что ключи v2 с API v3 не работают.
- Akismet. Сервис проверяет все данные формы. Короткие сообщения со ссылками, повторяющийся текст или почта на одноразовом домене повышают шанс попасть в спам.
- Список запрещенных слов. Он берется из настроек WordPress: раздел «Настройки», «Обсуждение», поле запрещенных ключей для комментариев. Туда можно вписать слова и IP-адреса, по одному на строку. Если когда-то туда добавили частое слово или адрес сети, под блокировку попадут и обычные клиенты.
- Сторонние плагины защиты. Некоторые плагины безопасности и антибот-сервисы добавляют свои проверки поверх формы.
Если причина в reCAPTCHA, перевыпустите ключи v3 для текущего домена и вставьте их в разделе интеграций Contact Form 7. Если в Akismet, посмотрите, какие именно заявки он блокирует: иногда достаточно убрать из формы необязательное поле со ссылкой на сайт.
Значок загрузки крутится, а ответа нет
Когда после нажатия кнопки бесконечно крутится значок загрузки, причина почти всегда в конфликте с другим плагином или темой, а не в почте. Разработчик Contact Form 7 советует проверить это, отключив остальные плагины и временно переключившись на стандартную тему.
На рабочем сайте так делать нельзя: клиенты увидят сломанный дизайн. Правильнее повторить проверку на тестовой копии, как мы описывали в статье о тестовой копии сайта на WordPress. Отключайте плагины по одному и после каждого отправляйте форму: так находится конкретный виновник.
Отдельный частый случай: закрытый REST API. По FAQ плагина, Contact Form 7 начиная с версии 4.8 отправляет форму без перезагрузки страницы через REST API WordPress. Если плагин безопасности или правило на сервере закрыли адреса вида /wp-json/, отправка через Ajax ломается. Разработчик рекомендует не отключать REST API: это базовая часть современного WordPress. Если доступ закрыт специально, откройте его хотя бы для маршрута Contact Form 7.
Проверить это может любой администратор: откройте инструменты разработчика в браузере, вкладку «Сеть», отправьте форму и посмотрите на запрос к адресу с contact-form-7 в пути. Ответ с кодом 403 или 401 обычно означает блокировку плагином безопасности или файрволом хостинга. Ответ 500 говорит об ошибке PHP на сервере, ее видно в журнале ошибок хостинга.
Еще одна причина, которую часто упускают: кэширование. Если плагин кэша или CDN отдает старую версию страницы со старыми скриптами после обновления Contact Form 7, форма может вести себя странно. Очистите кэш сайта и CDN после каждого обновления плагина форм.
Как не терять заявки, пока ищете причину
Пока ошибка не найдена, каждая отправка формы может быть потерянной заявкой, поэтому первым делом включите сохранение заявок в базу сайта. Contact Form 7 сам ничего не хранит, и, как сказано в описании Flamingo на сайте плагина, при сбое почты сообщения теряются навсегда.
Минимальный набор защиты от потерь:
- Установите Flamingo. Все отправки формы будут сохраняться в админке WordPress, даже если письмо не ушло.
- Добавьте рядом с формой телефон и ссылку на мессенджер. Клиент, у которого не сработала форма, хотя бы позвонит.
- Настройте цель в Яндекс.Метрике или событие в Google Analytics на успешную отправку формы. Резкое падение числа целей будет сигналом раньше, чем жалобы менеджеров.
- Раз в неделю отправляйте тестовую заявку и проверяйте, что она дошла. Это скучно, но ловит поломку после обновлений и смены паролей.
Надежнее всего отправлять заявки сразу в CRM, а не только на почту. Тогда письмо становится дублем, а не единственным каналом. На проектах B2BPRO.KZ мы чаще всего видим именно такую картину: форма годами шлет заявки на общий ящик, его никто толком не читает, а о поломке узнают через неделю. Если форма должна создавать лид в Битрикс24, а не только письмо, полезно знать, где обычно рвется эта связка: мы описали проверку в статье о форме с сайта, которая не создает лид в Битрикс24.
Когда проще отдать форму разработчику
Самостоятельно стоит разбираться, пока проблема в настройках самой формы: адрес отправителя, получатель, ключи reCAPTCHA. Если же ошибка связана с сервером, почтой домена, файрволом или конфликтом плагинов, быстрее и дешевле поручить это разработчику, потому что каждый день простоя формы стоит заявок.
Признаки, что пора звать специалиста:
- письмо о сбросе пароля WordPress тоже не приходит;
- в журнале ошибок хостинга есть ошибки PHP при отправке формы;
- запрос формы возвращает 403, а вы не знаете, какой плагин или правило его блокирует;
- форма ломается после каждого обновления плагинов;
- сайт давно не обновлялся, и любое изменение страшно делать на рабочей версии.
Мы берем такие задачи в рамках поддержки сайтов: находим причину, настраиваем SMTP и записи домена, подключаем сохранение заявок и передачу их в CRM. Если сайт устарел настолько, что формы и плагины ломаются регулярно, иногда разумнее пересобрать его заново; посмотрите наши услуги по разработке сайтов, там есть и поддержка, и разработка под ключ. Для казахстанских компаний мы работаем с местными хостингами и почтой на доменах .kz, так что знаем их типичные ограничения на отправку писем.
Частые вопросы
Почему Contact Form 7 пишет «Не удалось отправить сообщение»?
Причин две: WordPress не смог отправить письмо или защита от спама заблокировала отправку. Текст ошибки одинаковый, отличается цвет рамки: красная означает сбой почты, оранжевая означает антиспам. При красной проверьте адрес отправителя и работу почты сервера, при оранжевой проверьте reCAPTCHA, Akismet и список запрещенных слов.
Как проверить, работает ли почта на сайте WordPress?
Проще всего запросить сброс пароля для своего пользователя на странице входа в WordPress. Если письмо о сбросе не пришло, сервер не отправляет почту вообще, и дело не в Contact Form 7. В этом случае подключите отправку через SMTP с ящика на домене сайта и повторите проверку формы.
Можно ли сделать так, чтобы заявки не терялись при ошибке формы?
Да, установите бесплатный плагин Flamingo от автора Contact Form 7. Он сохраняет все отправки формы в базе сайта, и заявку можно найти в админке, даже если письмо не ушло. Дополнительно стоит передавать заявки в CRM и раз в неделю отправлять тестовую заявку, чтобы вовремя заметить поломку.
Почему форма показывает «Спасибо», а письмо не приходит?
Зеленое сообщение значит, что сайт успешно передал письмо дальше, а потерялось оно уже по пути. Чаще всего его отсекает спам-фильтр почты получателя. Проверьте папку «Спам», поставьте в поле «От кого» адрес на домене сайта и настройте для домена записи SPF, DKIM и DMARC.
Что делать, если после отправки формы бесконечно крутится значок загрузки?
Обычно это конфликт с другим плагином или темой либо закрытый REST API WordPress. Откройте инструменты разработчика в браузере и посмотрите ответ на запрос формы: код 403 указывает на блокировку плагином безопасности или файрволом. Конфликт плагинов проверяйте на тестовой копии сайта, отключая их по одному.
