Contact Form 7 не отправляет письма с WordPress — как исправить
wp_mail(). Проблема в том, что wp_mail() полагается на PHP-функцию mail(), а ей на большинстве хостингов доверять нельзя.
Что на самом деле происходит
PHP mail() отправляет письмо напрямую, без аутентификации. Почтовые серверы Gmail, Mail.ru и Яндекса видят анонимную отправку и либо отклоняют письмо, либо кидают в спам. На Beget и Timeweb mail() часто отключена вообще.
CF7 тут ни при чём. Он исправно передаёт данные. Письмо теряется уже после того, как WordPress пытается его доставить.
Вывод: нужна отправка через SMTP с авторизацией. Это единственный надёжный способ.
Инструкция
1. Плагин WP Mail SMTP
Ставьте его. Бесплатной версии хватает. Не тратьте время на ручную настройку phpmailer_init — плагин делает то же самое, но с логами и тестом отправки.
Плагины → Добавить → «WP Mail SMTP» → Установить → Активировать
2. Данные SMTP-сервера
SMTP Host, порт, логин и пароль. Вот рабочие варианты:
- Яндекс 360 — smtp.yandex.ru, порт 465 (SSL). Надёжно, письма не теряются.
- Mail.ru для бизнеса — smtp.mail.ru, порт 465 (SSL). Тоже ок.
- Beget — smtp.beget.com, порт 465. Работает, но письма иногда задерживаются.
3. Тест
WP Mail SMTP → Инструменты → Тест письма. Если ушло — проблема решена. Если ошибка — плагин покажет точную причину. Обычно это неправильный пароль или заблокированный порт.
4. SPF, если письма в спаме
Без SPF-записи письмо выглядит как подделка. Добавьте TXT-запись в DNS:
v=spf1 include:_spf.yandex.net ~all
DKIM — опционально, но с ним письма ещё реже попадают в спам.
Что часто упускают
- From Email должен совпадать с доменом SMTP. Не ставьте gmail.com если отправляете через Яндекс.
- Порт 465 (SSL) надёжнее чем 587 (TLS). На практике меньше проблем с блокировками хостинга.
- Cloudflare не должен проксировать почтовый трафик. Для почтовых записей DNS — серое облако, не оранжевое.
Частые вопросы
functions.php занимает 15 минут и легко ломается при обновлении WordPress. Плагин — 2 минуты и логи в комплекте.Не получается настроить?
Проверю сайт, найду причину и исправлю. Обычно такие проблемы решаются за час-два.