Где отключить подмену адреса почты в Contact Form 7?
WordPress + Contact Form 7. Больше никаких почтовых плагинов. Проблема в том, что в поле От указано имя info@site.ru, а в логах видно, что отправка идет от имени admin@site.ru. При этом в админской почте указан вообще другой адрес.
Вопрос: кто из них (ВП ил КФ7) поменяет адрес отправки? Как это исправить?
Дополнительные вопросы
Я проверил на чистом ВП - какой адрес указан в конструкторе формы "От кого", с того и отправляет.
Но если тебя интересуют логи, то об этом надо было писать в вопросе. Подробно - что как делаешь, какой шаблон формы, какие настройки отправки и пр.
У меня оно выглядит так:
2024-04-04 17:54:57 1rsOUT-000QgR-I4 <= admin@site.ru U=remont P=local S=1392 id=MedEjew@site.ru
2024-04-04 17:54:57 1rsOUT-000QgR-I4 ** md****@mail.ru R=check_outgoing_from_header: You can not send mail from here with From: WordPress wordpress@site.ru as sender: admin@site.ru
И это от всех ВП сайтов, которых несколько десятков. То есть это не 1 сломанный сайт, они все себя так ведут.
Отсюда вопрос: что именно меняет адрес wordpress@site.ru на admin@site.ru? Сам ВП? Плагин CF7? Сервак?
Ответы на вопрос 0
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Подмена адреса почты в Contact Form 7 обычно происходит не в самом CF7, а на уровне SMTP-плагина, почтового сервера, политики домена или фильтров WordPress. Многие хостинги не дают отправлять письма с произвольного From, если домен не совпадает с доменом сайта или не настроены SPF/DKIM.
Что проверить:
- поле
Fromв настройках формы Contact Form 7; - настройки SMTP-плагина: фиксированный отправитель, force from email/name;
- SPF, DKIM и DMARC для домена отправителя;
- логи Exim/Postfix или логи SMTP-плагина;
- фильтры в теме или mu-plugin:
wp_mail_from,wp_mail_from_name.
Если нужно найти принудительную подмену в коде:
add_filter('wp_mail_from', function ($email) { return 'noreply@example.ru'; }); |
add_filter('wp_mail_from', function ($email) { return 'noreply@example.ru'; });
Правильная схема: в From ставить адрес на домене сайта, например noreply@site.ru, а email пользователя передавать в Reply-To. Так письма реже попадают в спам и не конфликтуют с политиками почтовых сервисов.

Contact Form 7 сам по себе обычно отправляет письмо с тем адресом, который указан в поле «От кого». Если в настройках формы стоит
info@site.ru, а в логах фактическим отправителем становитсяadmin@site.ru, подмена чаще происходит ниже: в WordPress-фильтрах, SMTP/почтовом сервере, настройках хостинга или политике отправки домена.Проверять нужно в таком порядке:
От когозаполнено адресом на домене сайта.functions.php, mu-plugins и кастомные плагины на фильтрыwp_mail_fromиwp_mail_from_name.Типичный код подмены в WordPress выглядит так:
add_filter('wp_mail_from', function () { return 'admin@site.ru'; }); add_filter('wp_mail_from_name', function () { return 'Site Admin'; });
Если такой код есть, его нужно удалить или заменить на нужный адрес. Но правильнее для формы использовать схему:
From— технический адрес сайта, напримерnoreply@site.ru, а адрес посетителя передавать вReply-To. Тогда почта меньше конфликтует с SPF/DMARC и лучше доставляется.Пример для CF7:
From: Сайт <noreply@site.ru> Reply-To: [your-email]
Если после этого в логах всё равно виден
admin@site.ru, значит подмена происходит не в Contact Form 7, а на сервере или в глобальном коде WordPress.