Contact Form 7 выдаёт ошибку при отправке сообщения: как определить причину
Если после отправки формы на WordPress вы видите сообщение «При отправке сообщения произошла ошибка. Пожалуйста, попробуйте ещё раз позже», это вводит в заблуждение. Первая мысль — проблемы с почтой. Однако в Contact Form 7 это сообщение универсально и может означать две принципиально разные вещи:
- Проблема с отправкой письма. Плагин попытался вызвать функцию
wp_mail(), но получил ошибку. - Сработала антиспам-защита. Плагин не стал пытаться отправить письмо, так как посчитал данные спамом.
Причины и методы решения в каждом случае кардинально отличаются. Установка SMTP-плагина не поможет, если вас заблокировал Akismet или reCAPTCHA.
Почему для всех ошибок одно сообщение?
Разработчик Contact Form 7 использует единый текст по двум причинам:
- Для спам-ботов: Если бот поймет, что его остановил конкретный фильтр, он подстроится под него.
- Для пользователей: Если антиспам ошибся, не стоит прямо обвинять человека в рассылке спама.
С точки зрения пользователя — это этично. С точки зрения владельца сайта — это превращает диагностику в гадание на кофейной гуще.
Шаг 1. Самое простое решение: разделите сообщения
Чтобы понять причину, вам не нужен доступ к серверу. Достаточно заменить стандартный текст ошибки.
Как это сделать:
- Перейдите в админке: Контакты → Контактные формы → (ваша форма) → Сообщения.
- Найдите два поля:
- Ошибка при отправке письма.
- Отправляемые данные определены как спам.
- Задайте им разные тексты.
Пример для поля «Ошибка отправки»:
Не удалось отправить сообщение из-за технического сбоя. Попробуйте позже или напишите нам напрямую на почту.
Пример для поля «Спам»:
Не удалось пройти автоматическую проверку безопасности. Обновите страницу и попробуйте еще раз.
После сохранения отправьте тестовую форму. Текст ошибки сразу укажет направление для поиска.
Шаг 2. Что делать, если ошибка в отправке письма
Если вы увидели техническое сообщение, значит, Contact Form 7 успешно обработал данные, но WordPress не смог отправить письмо.
Проверьте в первую очередь:
- Поле «От кого»: В нем обязательно должен быть указан email с доменом вашего сайта (например,
wordpress@ваш-сайт.ру). Использование почты пользователя (поле[your-email]) здесь — частая причина отказа почтовых серверов. - Поле «Кому»: Убедитесь, что адрес получателя указан верно.
- SMTP: Если вы не настраивали SMTP-плагин, самое время это сделать (например, через WP Mail SMTP).
- Логи хостинга: Проверьте журнал ошибок вашего хостинг-провайдера.
Важно! Если в сообщении сказано, что письмо отправлено (sent), но оно не приходит — это проблема доставки (SPF, DKIM, папка «Спам»). Это уже не ошибка Contact Form 7, а вопрос настройки вашего почтового ящика.
Шаг 3. Что делать, если ошибка в антиспам-проверке
Если вы увидели сообщение о проверке безопасности, значит, отправка была прервана до вызова почтовой функции.
Возможные причины:
- reCAPTCHA / Turnstile: Токен не передан, истек или ключи API (site и secret) в настройках плагина неверны.
- Akismet: Плагин посчитал текст или IP-адрес спамным.
- Черный список: Сработал список запрещенных ключевых слов WordPress.
- Конфликт плагинов: Другой плагин безопасности блокирует запрос.
Как найти точную причину:
- Установите официальный плагин Flamingo. Он сохраняет все отправки и в логах показывает, какой именно модуль присвоил статус
spam. - Проверьте класс у элемента
<form>в инспекторе браузера (F12). Если у формы появился классspam, то это точно антиспам, а не ошибка почты (failed).
Быстрая диагностика для разработчиков
Если вы работаете с кодом, самый надежный способ — использовать JavaScript-события Contact Form 7.
Добавьте на сайт этот сниппет для отладки в консоли:
javascript
document.addEventListener('wpcf7mailfailed', function() {
console.warn('Ошибка: Письмо не отправлено (wp_mail вернул false)');
});
document.addEventListener('wpcf7spam', function() {
console.warn('Ошибка: Форма отклонена антиспам-системой');
});
После отправки формы в консоли браузера вы увидите точную причину.
Не начинайте настройку SMTP, пока не убедитесь, что проблема именно в почте. Стандартный текст «При отправке сообщения произошла ошибка» — это ширма, за которой скрываются два разных сценария: результат проблем с сервером и или настройка спам-фильтров.
Ваш алгоритм действий:
- Замените стандартные сообщения в настройках формы.
- Отправьте форму и прочитайте новое сообщение.
- Если «техническая ошибка» → проверяйте SMTP, поле «От кого» и логи хостинга.
- Если «проверка безопасности» → проверяйте reCAPTCHA, Akismet и логи Flamingo.
Это сэкономит вам часы рабочего времени и нервов.