Главная » Wordpress » Contact Form 7 выдаёт ошибку при отправке сообщения: как определить причину
|

Contact Form 7 выдаёт ошибку при отправке сообщения: как определить причину

Если после отправки формы на WordPress вы видите сообщение «При отправке сообщения произошла ошибка. Пожалуйста, попробуйте ещё раз позже», это вводит в заблуждение. Первая мысль — проблемы с почтой. Однако в Contact Form 7 это сообщение универсально и может означать две принципиально разные вещи:

  1. Проблема с отправкой письма. Плагин попытался вызвать функцию wp_mail(), но получил ошибку.
  2. Сработала антиспам-защита. Плагин не стал пытаться отправить письмо, так как посчитал данные спамом.

Причины и методы решения в каждом случае кардинально отличаются. Установка SMTP-плагина не поможет, если вас заблокировал Akismet или reCAPTCHA.

Почему для всех ошибок одно сообщение?

Разработчик Contact Form 7 использует единый текст по двум причинам:

  • Для спам-ботов: Если бот поймет, что его остановил конкретный фильтр, он подстроится под него.
  • Для пользователей: Если антиспам ошибся, не стоит прямо обвинять человека в рассылке спама.

С точки зрения пользователя — это этично. С точки зрения владельца сайта — это превращает диагностику в гадание на кофейной гуще.

Шаг 1. Самое простое решение: разделите сообщения

Чтобы понять причину, вам не нужен доступ к серверу. Достаточно заменить стандартный текст ошибки.

Как это сделать:

  1. Перейдите в админке: Контакты → Контактные формы → (ваша форма) → Сообщения.
  2. Найдите два поля:
    • Ошибка при отправке письма.
    • Отправляемые данные определены как спам.
  3. Задайте им разные тексты.

Пример для поля «Ошибка отправки»:

Не удалось отправить сообщение из-за технического сбоя. Попробуйте позже или напишите нам напрямую на почту.

Пример для поля «Спам»:

Не удалось пройти автоматическую проверку безопасности. Обновите страницу и попробуйте еще раз.

После сохранения отправьте тестовую форму. Текст ошибки сразу укажет направление для поиска.

Шаг 2. Что делать, если ошибка в отправке письма

Если вы увидели техническое сообщение, значит, Contact Form 7 успешно обработал данные, но WordPress не смог отправить письмо.

Проверьте в первую очередь:

  1. Поле «От кого»: В нем обязательно должен быть указан email с доменом вашего сайта (например, wordpress@ваш-сайт.ру). Использование почты пользователя (поле [your-email]) здесь — частая причина отказа почтовых серверов.
  2. Поле «Кому»: Убедитесь, что адрес получателя указан верно.
  3. SMTP: Если вы не настраивали SMTP-плагин, самое время это сделать (например, через WP Mail SMTP).
  4. Логи хостинга: Проверьте журнал ошибок вашего хостинг-провайдера.

Важно! Если в сообщении сказано, что письмо отправлено (sent), но оно не приходит — это проблема доставки (SPF, DKIM, папка «Спам»). Это уже не ошибка Contact Form 7, а вопрос настройки вашего почтового ящика.

Шаг 3. Что делать, если ошибка в антиспам-проверке

Если вы увидели сообщение о проверке безопасности, значит, отправка была прервана до вызова почтовой функции.

Возможные причины:

  • reCAPTCHA / Turnstile: Токен не передан, истек или ключи API (site и secret) в настройках плагина неверны.
  • Akismet: Плагин посчитал текст или IP-адрес спамным.
  • Черный список: Сработал список запрещенных ключевых слов WordPress.
  • Конфликт плагинов: Другой плагин безопасности блокирует запрос.

Как найти точную причину:

  1. Установите официальный плагин Flamingo. Он сохраняет все отправки и в логах показывает, какой именно модуль присвоил статус spam.
  2. Проверьте класс у элемента <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, пока не убедитесь, что проблема именно в почте. Стандартный текст «При отправке сообщения произошла ошибка» — это ширма, за которой скрываются два разных сценария: результат проблем с сервером и или настройка спам-фильтров.

Ваш алгоритм действий:

  1. Замените стандартные сообщения в настройках формы.
  2. Отправьте форму и прочитайте новое сообщение.
  3. Если «техническая ошибка» → проверяйте SMTP, поле «От кого» и логи хостинга.
  4. Если «проверка безопасности» → проверяйте reCAPTCHA, Akismet и логи Flamingo.

Это сэкономит вам часы рабочего времени и нервов.

Похожие записи

Задайте вопрос

Ваш адрес email не будет опубликован. Обязательные поля помечены *