
🔧 Contact Form 7: настраиваем отправку писем и исправляем ошибки доставки
Как Contact Form 7 отправляет письма и почему они не доходят
Contact Form 7 используют на 5+ миллионах сайтов, это самый популярный плагин форм для WordPress. Настроить форму из трёх полей можно за пару минут, но когда письма перестают приходить, начинается головная боль: владелец сайта теряет заявки, не понимает причин и лезет в дебри форумов.
Проблема почти никогда не в самом плагине. CF7 передаёт письмо функции wp_mail(), а та, вашему серверу. Дальше сценарий зависит от хостинга, настроек PHP, активных плагинов и десятка других факторов. Один выключенный REST API или неправильное поле «От кого», и форма работает, а писем нет.
Мы собрали пошаговую настройку почтового шаблона CF7 и разобрали все типовые причины отказа, с конкретными решениями, которые проверены на десятках сайтов.
💡 Быстрый обзор:
- Заполняем поля Кому, От кого и Тема в настройках письма
- Копируем готовый HTML-шаблон тела письма
- Проверяем основные причины, почему письма не уходят
- Настраиваем SMTP для стабильной доставки
Настройка почтового шаблона: пошагово
Открываем форму в админке: Контактная форма → выбрать форму → вкладка «Письмо». Здесь CF7 собирает письмо из трёх частей: заголовков, темы и тела. Ошибка в любом поле ломает доставку, пройдёмся по каждому.
Кому, От кого и Тема
Кому, ваш рабочий email, на который приходят заявки. Например, info@ваш-домен.com или Gmail-адрес, если вы используете SMTP-плагин.
От кого, здесь главное правило: домен отправителя должен совпадать с доменом сайта. Большинство хостеров отклоняют письма, где в поле «От кого» стоит [email protected], а сайт висит на mysite.com. Ставьте site@ваш-домен.com, сам ящик может не существовать, это нормально. Почтовый сервер проверяет именно домен, а не реальность адреса.
Тема, используйте макросы CF7 для подстановки данных:
1 [_site_title] — Форма «Контактная форма»
[_site_title] автоматически подставит название сайта из настроек WordPress. Так вы сразу видите, с какого проекта пришла заявка.
Дополнительные заголовки, Reply-to не трогаем, CF7 сам выставит email из поля формы, которое вы укажете в теле письма.
Тело письма: HTML-шаблон
Стандартное письмо CF7, это голый текст с метками полей. Выглядит дёшево и нечитаемо. Вот шаблон, который мы используем на всех проектах, с логотипом, нормальной вёрсткой и ссылками на email/телефон клиента:
1 <img src="https://ВАШ_ДОМЕН.COM/wp-content/uploads/2024/logo-150x150.png" 2 style="max-width: 150px !important;"> 3 4 <h3>Пользователь заполнил следующие данные:</h3> 5 6 <p><b>Имя:</b> [text-59]</p> 7 <p><b>E-mail:</b> <a href="mailto:[Email]">[Email]</a></p> 8 <p><b>Телефон:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 9 <p><b>Сообщение:</b> [textarea-102]</p> 10 11 <p>Сообщение отправлено с сайта [_site_title] ([_site_url])</p>
Что здесь важно: логотип должен быть квадратным и компактным (около 150 px по каждой стороне), иначе в почтовых клиентах он поедет. Макросы в квадратных скобках ([text-59], [Email]), это теги полей вашей формы; подставьте свои названия из вкладки «Форма». И обязательно отметьте галочку «Использовать HTML-формат письма» под редактором шаблона, без неё HTML-теги придут как plain text.

6 причин, почему письма не уходят, и что с этим делать
1. Неправильное поле «От кого»
Самая частая ошибка: в «От кого» указан email клиента из формы, [Email]. Сервер получателя видит письмо с доменом gmail.com, отправленное с вашего хостинга, и блокирует его как спуфинг. Решение: в «От кого» всегда должен быть адрес на домене сайта. Email клиента ставьте в Reply-to, через дополнительный заголовок:
1 Reply-To: [Email]
2. Конфликт плагинов безопасности
Плагины вроде Wordfence, iThemes Security (теперь Solid Security) и All-In-One Security могут блокировать исходящие HTTP-запросы WordPress, включая отправку писем. Диагностика простая: отключите все плагины, кроме Contact Form 7, и протестируйте форму. Заработало, включайте плагины по одному и ловите виновника.
3. Отключён REST API
Contact Form 7 использует WordPress REST API для отправки форм через AJAX. Плагины оптимизации, тот же Clearfy Cache (примечание: с октября 2025 проект перешёл под крыло Super Page Cache и больше не развивается отдельно; текущим пользователям рекомендуют мигрировать на Super Page Cache), могут отключать REST API для ускорения сайта. Проверьте настройки вашего оптимизатора: переключатель REST API должен быть в положении «Выкл», то есть REST API включён и работает.
4. Хостинг блокирует функцию mail()
На дешёвых хостингах PHP-функция mail() часто отключена или урезана. Contact Form 7 по умолчанию отправляет письма именно через неё. Напишите в поддержку хостинга и спросите, разрешена ли mail() на вашем тарифе. Если нет, переходите на SMTP (раздел ниже), это решает проблему радикально.
5. Письма попадают в спам
Даже если письмо ушло, Gmail или почта хостинга может положить его в спам. Причины: отсутствие SPF/DKIM-записей у домена, «подозрительный» заголовок «От кого», HTML без текстовой части. Решение, SMTP-плагин с отправкой через внешний сервис (Gmail API, Mailgun, SendGrid). Они подписывают каждое письмо DKIM-подписью и используют авторитетные SMTP-серверы, доставляемость становится практически стопроцентной.
6. Чувствительность к версии PHP и WordPress
CF7 активно обновляется (сверьте актуальную версию на wordpress.org, на середину 2026 это ветка 6.x, работает на PHP 7.4 и выше). Если ваш хостинг крутит древний PHP 5.6 или, наоборот, вы включили экспериментальный PHP 8.4 без проверки совместимости, письма могут тихо падать. Держите PHP 8.1-8.2, это золотая середина.
Настройка SMTP: решаем проблему доставки раз и навсегда
SMTP, это протокол, который передаёт письмо не через функцию mail() вашего сервера, а через полноценный почтовый сервис. Для WordPress есть десяток плагинов, которые перехватывают wp_mail() и маршрутизируют письма через внешний SMTP-сервер.
Что выбрать:
- Gmail API, бесплатно до 500 писем в сутки через Google Workspace или личный Gmail. Плюс: отличная доставляемость. Минус: нужно создавать проект в Google Cloud Console и получать OAuth-ключи.
- Brevo (бывший Sendinblue), 300 писем в сутки бесплатно, простой SMTP с логином и паролем. Не требует OAuth.
- Mailgun, 100 писем в сутки бесплатно, API-ключ и готово. Для разработчиков.
Установите любой SMTP-плагин (WP Mail SMTP, Post SMTP, FluentSMTP, все бесплатны в репозитории WordPress), введите данные от провайдера, и функция mail() вам больше не нужна. CF7 продолжит работать как обычно, но письма пойдут через надёжный канал.
CSS и кастомный шрифт в письмах CF7
Если вы отправляете не просто заявки, а, например, подтверждение заказа с краткими деталями товара, имеет смысл стилизовать письмо. CSS в email работает через inline-стили (style=""), внешние таблицы стилей почтовые клиенты игнорируют. Вот пример стилизованного шаблона:
1 <img src="https://ВАШ_ДОМЕН.COM/logo.png" 2 style="max-width: 150px !important;"> 3 4 <h2 style="font-family: Arial, sans-serif; color: #333;"> 5 Пользователь выбрал товар: 6 </h2> 7 <h2 style="font-family: Arial, sans-serif;">[hidden-120]</h2> 8 9 <hr style="border: 1px solid #eee;"> 10 11 <h3 style="font-family: Arial, sans-serif; color: #555;"> 12 Пользователь заполнил следующие данные: 13 </h3> 14 15 <p style="font-size: 14px;"><b>Имя:</b> [text-59]</p> 16 <p style="font-size: 14px;"><b>Телефон:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 17 <p style="font-size: 14px;"><b>Email:</b> [Email]</p> 18 19 <p style="color: #999; font-size: 12px;"> 20 Сообщение отправлено с сайта <b>[_site_title] ([_site_url])</b> 21 </p>
Правила те же: логотип, квадрат, галочка HTML-формата, включена, макросы, свои. Кастомные шрифты из Google Fonts в почте не работают, ставьте системные стеки (Arial, Helvetica, sans-serif).
⁉️🤔 Частые вопросы
Почему CF7 показывает «Сообщение отправлено», а письма нет?
CF7 отвечает за сбор данных и передачу их WordPress, а не за финальную доставку. Ответ «успешно» означает, что AJAX-запрос отработал без ошибок. Сама отправка письма происходит в фоне через
wp_mail(), и если на этом шаге что-то пошло не так, хостинг заблокировалmail(), адрес «От кого» не прошёл проверку, письмо ушло в спам, CF7 не покажет ошибку. Поэтому после настройки всегда тестируйте форму на реальный почтовый ящик.
Обязательно ли использовать SMTP-плагин?
Не обязательно, но настоятельно рекомендуется. Без SMTP ваши письма отправляет PHP-функция
mail(), она не аутентифицирует отправителя, не подписывает DKIM и часто блокируется спам-фильтрами. SMTP-плагин добавляет аутентификацию и радикально повышает доставляемость. На практике мы видели десятки сайтов, где форма «работала», но письма уходили в спам или не доходили вовсе. После включения SMTP через Post SMTP или FluentSMTP проблема исчезала за 5 минут.
Что делать, если CF7 перестал работать после обновления WordPress?
Сначала проверьте версию PHP, CF7 требует PHP 7.4 или выше (сверьтесь с официальной документацией). Затем отключите плагины кеширования и оптимизации: они часто ломают REST API при обновлении ядра. Если не помогло, временно переключитесь на стандартную тему WordPress и протестируйте форму. В большинстве случаев это конфликт с плагином кеширования или безопасности, который ещё не адаптировался под новую версию ядра.
Как проверить, что REST API работает?
Откройте в браузере
https://ваш-сайт.com/wp-json/, если видите JSON с перечнем доступных эндпоинтов, REST API жив. Если получаете 404 или белый экран, REST API отключён плагином оптимизации или security-плагином. Это самый быстрый способ диагностики: endpoint отдаёт JSON, CF7 имеет всё необходимое для работы. Ищите настройки REST API в плагинах вроде Clearfy, Perfmatters, WP-Optimize или в security-решениях вроде Wordfence.
Можно ли отправлять письма с вложениями через CF7?
Да, CF7 поддерживает загрузку файлов через поле
[file]. В настройках письма, в поле «Вложения», укажите макрос этого поля, и файл прикрепится к письму. Большинство хостеров ограничивают размер вложений черезupload_max_filesizeв PHP (обычно 2-8 МБ). Для множественной загрузки используйте отдельные поля. Если письма с вложениями не уходят при работающей форме без вложений, проблема в лимите размера, уменьшите файлы или попросите хостер увеличить лимит.
Что ставить в 2026 году: CF7 + SMTP или альтернативы?
Contact Form 7 по-прежнему лучший бесплатный плагин форм для WordPress, если вам нужна кастомизация и вы не боитесь заглянуть в настройки. Но проблема с отправкой писем встроена в саму архитектуру WordPress: функция mail() ненадёжна по определению.
Поэтому формула 2026 года такая: Contact Form 7 + SMTP-плагин. Поставьте FluentSMTP (бесплатный, легковесный, без рекламы в админке) или Post SMTP, и настройте отправку через Gmail API, Brevo или Mailgun. Эти два компонента вместе дают: неограниченную кастомизацию форм + доставляемость на уровне корпоративных сервисов. Цена, 0 $, время настройки, 10 минут.
Если же вы хотите форму «из коробки», где всё работает сразу и без танцев с бубном, присмотритесь к WPForms или Ninja Forms. Они платные, но SMTP-отправка у них вшита по умолчанию через собственные серверы. Выбор за вами: гибкость CF7 или простота коммерческих решений.



