Contact Form 7 не отправляет письма с WordPress — как исправить | Мастерская — статьи по WordPress и серверам | de-bor.ru

Частный web-мастер Денис Борисов
WordPress-сайтов

Contact Form 7 не отправляет письма с WordPress — как исправить

Почта и SMTP · 2026-05-25 · обновлено 2026-07-30 · 7 мин чтения
Contact Form 7 показывает «отправлено», а письма нет. Проблема не в плагине — он честно вызывает wp_mail(). Проблема в том, что wp_mail() полагается на PHP-функцию mail(), а ей на большинстве хостингов доверять нельзя. Решение: SMTP с авторизацией. 15 минут — и письма уходят.

Почему Contact Form 7 не отправляет письма

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

CF7 тут ни при чём. Он исправно передаёт данные. Письмо теряется уже после того, как WordPress пытается его доставить.

PHP mail() отправляет письмо напрямую, без аутентификации. Почтовые серверы Gmail, Mail.ru, Яндекса видят анонимную отправку и либо отклоняют письмо, либо кидают в спам. На Beget и Timeweb mail() часто отключена вообще. На Reg.ru — работает, но письма гарантированно уходят в спам, потому что IP-пул shared-хостинга почти всегда в чёрных списках.

Отдельная боль — кодировка. Если на сайте UTF-8, а PHP mail() шлёт в KOI-8R, получатель видит кракозябры. С SMTP этой проблемы нет: почтовый сервер сам определяет кодировку.

Вывод: mail() — анахронизм. SMTP с авторизацией — единственный надёжный способ. И точка.

Пошаговая настройка SMTP для Contact Form 7

1. Установите WP Mail SMTP

Берите бесплатную версию WP Mail SMTP — её достаточно. Не тратьте время на ручную настройку phpmailer_init в functions.php: плагин делает то же самое, но с логами и тестом отправки. При обновлении темы код не потеряется.

Плагины -> Добавить -> "WP Mail SMTP" -> Установить -> Активировать

Другие варианты: Post SMTP (логи подробнее, интерфейс сложнее), Easy WP SMTP (проще некуда — три поля), FluentSMTP (современный, с интеграцией API Яндекс.Почты). Все работают одинаково: перехватывают wp_mail() и отправляют через SMTP.

2. Настройте SMTP-соединение

В настройках WP Mail SMTP выберите «Other SMTP». Заполните:

  • SMTP Host — smtp.yandex.ru, smtp.mail.ru или smtp.beget.com
  • Encryption — SSL (не TLS, порт 465 работает надёжнее)
  • SMTP Port — 465
  • Auto TLS — Нет (SSL сам шифрует)
  • SMTP Username — полный email (например, robot@ваш-домен.ru)
  • SMTP Password — пароль приложения (не пароль от почты!)

Пароль приложения — отдельная тема. Яндекс 360 (бывший Яндекс.Почта для домена) и Mail.ru для бизнеса требуют пароль приложения, его создают в настройках аккаунта. Обычный пароль от почты не подходит, будет ошибка authentication failed.

На Beget можно сделать проще: использовать smtp.beget.com с логином и паролем от хостинга. Письма уходят, но есть нюанс: Beget-релеи иногда задерживают отправку на 10-30 минут в часы пик.

Бесплатные SMTP-варианты
Яндекс 360 — 7000 писем/день, бесплатно для своего домена. Mail.ru — 5000 писем/день. Gmail — 500 писем/день. Для интернет-магазина хватит любого, для рассылок — нет, нужен SendPulse или UniSender.

3. Тест отправки

WP Mail SMTP -> Инструменты -> Тест письма. Введите свой email и нажмите «Отправить». Если письмо пришло — дело сделано. Если нет — плагин покажет точную ошибку.

Самые частые ошибки при тесте:

  • Could not connect to SMTP host — хостинг блокирует порт 465. Проверьте в панели хостинга: на Beet нужно включить «Исходящие соединения» в настройках тарифа. На Timeweb порт 465 открыт по умолчанию. На Reg.ru бывает заблокирован — пишите в поддержку.
  • Authentication failed — неправильный пароль или введён основной пароль от почты, а не пароль приложения.
  • Connection timed out — слишком долгий ответ SMTP-сервера. Попробуйте порт 587 (TLS) вместо 465. На некоторых хостингах 587 работает быстрее.

4. SPF и DKIM — чтобы письма не уходили в спам

SMTP решил проблему доставки, но не проблему репутации. Если у домена нет SPF-записи, письма выглядят как подделка. Добавьте TXT-запись в DNS вашего домена:

v=spf1 include:_spf.yandex.net ~all

Для Mail.ru: v=spf1 redirect=_spf.mail.ru. Для Beget: v=spf1 include:_spf.beget.com ~all.

DKIM-подпись — опционально, но с ней письма ещё реже попадают в спам. Яндекс 360 даёт DKIM-ключ в панели управления почтой. Добавляете TXT-запись с ключом и всё. После SPF и DKIM можно добавить DMARC-политику — это защита от подделки вашего домена.

Проверить настройки: mail-tester.com. Отправьте письмо на адрес, который покажет сайт. Оценка 8-10 — всё хорошо. Ниже 6 — что-то не настроено.

5. Проверка Contact Form 7

После настройки SMTP зайдите в CF7 и отправьте тестовое сообщение через форму на сайте. Проверьте:

  • Письмо пришло на тот email, который указан в настройках CF7
  • Тема письма не пустая и не содержит кракозябр
  • Тело письма отображается корректно (не экранированные HTML-теги)
  • From Email совпадает с доменом SMTP (если отправляете через Яндекс, From: должен быть @ваш-домен.ru, не @gmail.com)

Если письмо не приходит — проверьте лог WP Mail SMTP. Там написано, на каком этапе обрыв.

Дополнительные причины, почему CF7 не отправляет

Если SMTP настроен, а письма всё равно не приходят — проверьте:

  • Конфликт с плагинами кэширования — WP Rocket, LiteSpeed Cache, W3 Total Cache могут блокировать AJAX-отправку CF7. Добавьте страницу с формой в исключения кэша.
  • Cloudflare проксирует форму — если включено «Проксировать через Cloudflare» для корня сайта, AJAX-запросы CF7 могут редиректиться на HTTPS с ошибкой. Включите правило Page Rule: /wp-json/* — DNS only (серое облако).
  • JS-ошибка на странице — другой плагин или скрипт темы ломает JavaScript CF7. Проверьте консоль браузера (F12) на ошибки при отправке формы.
  • Спам-фильтры внутри CF7 — если включена reCAPTCHA или Akismet, они могут блокировать отправку. Отключите временно и проверьте.
Быстрая диагностика
Установите плагин Check & Log Email. Он перехватывает все wp_mail() вызовы и показывает, какое письмо пытался отправить WordPress, кому и с каким содержимым. Если Check & Log Email показывает письмо, а в почтовом ящике пусто — проблема на стороне SMTP или почтового сервера. Если Check & Log Email пуст — CF7 не вызывает wp_mail() вообще, значит конфликт с другим плагином или темой.

Что часто упускают

  • From Email должен совпадать с доменом SMTP. Настройка From Email в CF7 — не просто формальность. Почтовый сервер Яндекса не пропустит письмо, если отправитель @gmail.com, а SMTP-сервер yandex.ru. RFC жёстко требует совпадения.
  • Порт 465 (SSL) надёжнее чем 587 (TLS). На Beget и Timeweb порт 465 стабильнее — меньше проблем с блокировками на уровне хостинга. 587 иногда режется файрволом.
  • Cloudflare не должен проксировать почтовый трафик. Для поддомена почты DNS-запись должна быть серой (DNS only), а не оранжевой (Proxied). Если проксировать — Cloudflare будет пытаться обработать SMTP-трафик как HTTP, что сломает отправку.
  • На общих хостингах лимиты на отправку. Beget — 500 писем/час, Timeweb — 300 писем/час, Reg.ru — 200 писем/час. Если превысить — хостинг временно блокирует отправку. Решение: настроить очередь через WP SMTP Queue или использовать внешний SMTP-сервис.

Частые вопросы

Обязательно ли ставить плагин?
Нет, но так быстрее. Ручная настройка через functions.php занимает 15 минут и легко ломается при обновлении WordPress. Плагин — 2 минуты и логи в комплекте.
CF7 говорит «отправлено» — где письмо?
CF7 подтверждает передачу данных в WordPress. Дальше — чёрный ящик. Письмо могло уйти и затеряться на почтовом сервере. Проверьте папку «Спам» и логи WP Mail SMTP.
Gmail SMTP подойдёт?
Работает, но не советую. Лимит 500 писем в день, и Google периодически меняет правила доступа. SMTP своего домена надёжнее.

Не получается настроить?

Проверю сайт, найду причину и исправлю. Обычно такие проблемы решаются за час-два.

Написать в Написать в

Сопровождение и поддержка сайта

Сопровождение и поддержка сайта

Обновление, мониторинг, исправление ошибок.

от 5.400 ₽/мес

Подробнее
Доменная почта

Доменная почта

Настройка почты на домене, DKIM, SPF.

5.400

Подробнее

Разрабатываю WordPress-сайты

Лендинги, многостраничные сайты, интернет-магазины на WooCommerce — всё на WordPress с удобной панелью управления.

Сайт под ключ: регистрация домена и хостинга, установка WordPress, настройка шаблона и модулей.

Поддерживаю WordPress-сайты

Обновление плагинов и тем, резервное копирование, мониторинг работоспособности — сайт работает без сбоев.

Оперативное исправление ошибок, создание новых разделов, доработка функционала и наполнение контентом.

Продвигаю WordPress-сайты

SEO-оптимизация, настройка Яндекс Метрики и Вебмастера, подключение Google Search Console.

Оптимизация позволяет «поднять» сайт в поисковых выдачах, увеличить целевой трафик и привлечь новых клиентов.

Чистка от вирусов WordPress

Если сайт взломали, появился подозрительный код или спам-рассылка — найду и удалю вредоносный код, закрою уязвимости и настрою защиту от повторного заражения.

После чистки проверю все файлы и плагины, обновлю WordPress до актуальной версии и настрою автоматическое резервное копирование.

Диагностика сайта

Проверю ваш сайт по ключевым параметрам и подготовлю отчёт с рекомендациями:

  • Скорость загрузки и производительность;
  • Безопасность и уязвимости;
  • SEO-состояние и индексация;
  • Мобильная адаптация;
  • Технические ошибки и код.
Заказать диагностику
Михайлова Анастасия

Денис МАСТЕР своего дела. Вёл целый проект, работали с ним на протяжении 4х месяцев. Отзывчивый, понимающий с полуслова специалист. Стоимость услуг радует, а качество работы приводит в восторг.

Денис спасибо Вам от лица нашей строительной компании и от всего нашего персонала.

Михайлова Анастасия

Игорь Караваев

Обратился к Денису для восстановления сайта на WordPress после сбоя. Сделал, как и обещал, за сутки — сайт снова работает без ошибок. Профессионал своего дела, доходчиво объясняет, вежлив и тактичен. Однозначно рекомендую!

Игорь Караваев

Яна Веркулич

Денис, спасибо огромное за работу)) Очень тепло вспоминаю Вас и все что Вы сделали для моей работы и моего сайта.

Денис Профессионал с большой буквы, решает любые вопросы, отличный специалист))

Рекомендую к сотрудничеству, еще раз спасибо)

Яна Веркулич

Бюро Переводов

Денис оперативно и грамотно справляется со всеми поставленными задачами. Внес правки на англоязычную и русскоязычную версии сайта, учел все пожелания. Будем обращаться еще!

Бюро Переводов

Анастасия Виричева

Денис мастер своего дела, рекомендую его как специалиста.
Понимает, что нужно сделать и справляется с поставленной задачей в короткое время.

Делал сайт для салона красоты, просто и функционально.

Анастасия Виричева

Владимир

Очень много времени мучались с сайтом на OpenCart. «Специалисты» не могли нормально разобраться в проблеме, возникавшей при выполнении элементарной задачи.

Денис сделал это в два счета, также расписал подробно, в чем была проблема и как она решена. На 200% доволен. Даже не хочется его рекомендовать, потому что будет постоянно занят))

Владимир

Ксения Петровская

Денис оперативно ответил и помог решить проблему, которую я даже описать нормально не могла)) Мы сами что-то накрутили с корпоративной почтой — письма то уходили, то нет, в общем всё сломали.

Денис всё починил, теперь у нас нормальная почта, домен работает, письма приходят и уходят. Цена как заявлена — оплатили по факту проверки. Спасибо большое!

Ксения Петровская

Александр Кривуля

Заказал у Дениса доработать сайт на WordPress. При этом трудно себе представлял, что сам хочу. Благодаря профессионализму Дениса и его умению всё грамотно и просто объяснять, предлагать разные варианты решений — цель была достигнута.

Умение общаться доходчиво и терпеливо с клиентами — огромный плюс. Я очень доволен. Однозначно рекомендую!

Александр Кривуля

Кондитер мания

Прекрасный специалист, ответил и устранил ошибку на сайте за пару часов, сохранила контакт, будем по необходимости обращаться. Рекомендую!

Кондитер мания

Бесплатная настройка хостинга и домена

Регистрация хостинга на 1 месяц и домена .ru/.рф на 1 год входит в стоимость разработки сайта.

Подробнее