Форма обратной связи с отправкой на почту php: Делаем форму обратной связи на сайте
Содержание
Создаем форму обратной связи на PHP
Одной из наиболее часто встречающихся на практике задач является реализация формы обратной связи. Тобишь написание ее HTML кода, оформление ее на CSS, создание PHP скрипта, который бы обрабатывал полученные от пользователя данные и отправлял их на нашу почту, написание JS скрипта, который бы проверял форму на адекватность вводимых данных, защита нашего детища от спама, чтобы наш почтовый ящик не обвалился от атак ботов.
Все вышеперечисленные моменты будут рассмотрены в нашем обзоре и подробно прокомментированы.
Итак, начинаем создание формы обратной связи:
HTML
В первую очередь мы пишем HTML код, в нем задаются поля, которые будет заполнять пользователь. Они же в дальнейшем будут оформляться. Код формы выглядит следующим образом:
<form method="post" action="mail.php"> <div> <label for="name">Имя:</label> <input maxlength="30" type="text" name="name" /> <label for="phone">Телефон:</label> <input maxlength="30" type="text" name="phone" /> <label for="mail">E-mail:</label> <input maxlength="30" type="text" name="mail" /> </div> <div> <label for="message">Сообщение:</label> <textarea rows="7" cols="50" name="message"></textarea> <input type="submit" value="Отправить" /> </div> </form>
И визуально она выглядит сейчас следующим образом:
Согласен, пока все некрасиво и ничего не понятно, но мы только начали.
Рассмотрим приведенный выше код подробно:
<form method="post" action="mail.php"> … </form>
для того, чтобы создать форму необходимо использовать тег form. Именно он определяет начало и конец формы для интерпретатора кода. У него, как и у любого тега, есть целый набор атрибутов, но обязательных для работы формы всего два, это method (метод отправки запроса на сервер, для форм стандартно используют post) и action (указывает путь к файлу-обработчику формы, именно в этом файле будет содержаться скрипт на PHP, который после будет отправлять введенные пользователем значения нам на почту, в нашем случае мы видим, что это файл называется mail.php и лежит он в том же директории сайта, что и рассматриваемая нами страница).
<input maxlength="30" type="text" name="name" />
Далее у нас следуют инпуты. Это собственно сами поля формы в которые пользователи будут вводить необходимую нам информацию (type=»text» говорит о том, что это будет текст). Атрибут maxlength указывает сколько символов может ввести пользователь в данное поле формы. Самый важный атрибут это name – он задает имя конкретного поля. Именно по этим именам в дальнейшем PHP скрипт будет обрабатывать поступающую в него информацию. При желании можно еще задать атрибут placeholder, который выводит внутри поля текст исчезающий при установке курсора внутри нее. Одной из проблем плейсхолдера является то, что он не поддерживается некоторыми старыми браузерами.
<label for="name">Имя:</label>
Используется в случае если мы отказались от плейсхолдеров. Обычная подпись поля, атрибут for сообщает к какому конкретно полю относится данная подпись. Значением указывается name интересующего нас поля.
<textarea rows="7" cols="50" name="message"></textarea>
Также как и инпут предназначен для введения пользователем информации, только на этот раз поле заточено для длинных сообщений. Rows указывает размер поля в строках, cols в символах. В целом они задают высоту и ширину нашего поля.
<input type="submit" value="Отправить" />
О том, что это кнопка для отправки формы нам сообщает type=»submit», а value задает текст, который будет внутри этой кнопки.
<div> </div>
использованы только для дальнейшего визуального оформления формы.
CSS
Для того, чтобы наша форма обратной связи выглядела презентабельно ее нужно оформить. Для получения следующего результата:
Мы использовали данный код:
form { background: #f4f5f7; padding: 20px; } form .left, form .right { display: inline-block; vertical-align: top; width: 458px; } form .right { padding-left: 20px; } label { display: block; font-size: 18px; text-align: center; margin: 10px 0px 0px 0px; } input, textarea { border: 1px solid #82858D; padding: 10px; font-size: 16px; width: 436px; } textarea { height: 98px; margin-bottom: 32px; } input[type="submit"] { width: 200px; float: right; border: none; background: #595B5F; color: #fff; text-transform: uppercase; }
Подробно расписывать CSS я не вижу смысла, обращу Ваше внимание лишь на ключевые моменты:
- Не стоит писать оформление под каждый тег в форме. Старайтесь строить свои селекторы так, чтобы парой строк кода оформлять все необходимые Вам элементы.
- Не используйте для переноса строк и создания отступов лишние теги по типу
<br>, <p>
и тд, с этими задачами прекрасно справляется CSS со свойством display: block и margin с padding. Больше о том, почему не стоит пользоваться<br>
в верстке вообще можете почитать в статье Тэг br, а так ли он нужен?. - Не стоит пользоваться табличной версткой для форм. Это противоречит семантике этого тега, а поисковики любят семантичный код. Для того, чтобы формировать визуальную структуру документа нам достаточно тегов div, и заданных им в CSS свойств display: inline-block (выстраивает блоки в ряд) и vertical-align: top (не дает им разбежаться по экрану), задаем им необходимую высоту и вуаля, ничего лишнего и все расположено так, как нам нужно.
Для желающих экономить свое время на оформлении сайтов могу посоветовать пользоваться CSS фреймворками при создании сайтов, особенно самописных. Мой выбор в этом плане- Twitter Bootstrap. Урок по оформлению форм с его использованием можно посмотреть тут.
PHP
Ну вот и пришло время сделать нашу форму работоспособной.
Заходим в наш корневой каталог сайта и создаем там файл mail.php, к которому мы ранее указывали путь в атрибуте action тега form.
В конечном итоге его код будет выглядеть следующим образом:
<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Ваше сообщение успешно отправлено</title> </head> <body> <?php $back = "<p><a href=\"javascript: history.back()\">Вернуться назад</a></p>"; if(!empty($_POST['name']) and !empty($_POST['phone']) and !empty($_POST['mail']) and !empty($_POST['message'])){ $name = trim(strip_tags($_POST['name'])); $phone = trim(strip_tags($_POST['phone'])); $mail = trim(strip_tags($_POST['mail'])); $message = trim(strip_tags($_POST['message'])); mail('почта_для_получения_сообщений@gmail. com', 'Письмо с адрес_вашего_сайта', 'Вам написал: '.$name.'<br />Его номер: '.$phone.'<br />Его почта: '.$mail.'<br /> Его сообщение: '.$message,"Content-type:text/html;charset=windows-1251"); echo "Ваше сообщение успешно отправлено!<Br> Вы получите ответ в ближайшее время<Br> $back"; exit; } else { echo "Для отправки сообщения заполните все поля! $back"; exit; } ?> </body> </html>
Обсуждение HTML и CSS части этого документа можно пропустить. По своей сути это обычная страница сайта, которую Вы можете оформить по своему желанию и необходимости. Рассмотрим же важнейшую ее часть – PHP скрипт обработки формы:
$back = "<p><a href=\"javascript: history.back()\">Вернуться назад</a></p>";
Этой строкой мы создаем ссылку для возвращения на предыдущую страницу. Поскольку мы заранее не знаем с какой страницы пользователь попадет на эту, то делается это при помощи маленькой JS функции. В дальнейшем мы просто будем обращаться к этой переменной для вывода ее в нужных нам местах.
if(!empty($_POST['name']) and !empty($_POST['phone']) and !empty($_POST['mail']) and !empty($_POST['message'])){ //внутрення часть обработчика } else { echo "Для отправки сообщения заполните все поля! $back"; exit; }
Тут мы прикручиваем проверку формы на наполненность полей. Как вы догадались, в части $_POST[‘name’] в кавычках мы пишем значение атрибута name наших инпутов.
Если все поля заполнены, то скрипт начнет обрабатывать данные в своей внутренней части, если же хоть одно поле не было заполнено, то на экран пользователя выведется сообщение с требованием заполнить все поля формы echo «Для отправки сообщения заполните все поля! $back» и ссылкой для возврата на предыдущую страницу, которую мы создали самой первой строкой.
Дале вставляем во внутреннюю часть обработчика формы:
$name = trim(strip_tags($_POST['name'])); $phone = trim(strip_tags($_POST['phone'])); $mail = trim(strip_tags($_POST['mail'])); $message = trim(strip_tags($_POST['message']));
Таким образом мы очистили вводимые пользователем данные от html тегов и лишних пробелов. Это позволяет нам обезопасить себя от получения вредоносного кода в высылаемых нам сообщениях.
Проверки можно и усложнить, но это уже по вашему желанию. Минимальную защиту на серверной стороне мы уже поставили. Дальнейшее мы сделаем на стороне клиента используя JS.
Полностью отказываться от защиты формы на серверной стороне в пользу JS не рекомендую, поскольку хоть и крайне редко, но встречаются уникумы с отключенным в браузере JS.
После чистки тегов добавляем отправку сообщения:
mail('почта_для_получения_сообщений@gmail.com', 'Письмо с адрес_вашего_сайта', 'Вам написал: '.$name.'<br />Его номер: '.$phone.'<br />Его почта: '.$mail.'<br /> Его сообщение: '.$message,"Content-type:text/html;charset=windows-1251");
Именно эта строка и занимается формированием и отправкой сообщения к нам. Заполняется она следующим образом:
- ‘почта_для_получения_сообщений@gmail.com’ – сюда между кавычек вставляете свою почту
- ‘Письмо с адрес_вашего_сайта’ – это тема сообщения, которое будет приходить на почту. Можно написать сюда что угодно.
- ‘Вам написал: ‘.$name.’
<br />
Его номер: ‘.$phone.’<br />
Его почта: ‘.$mail.’<br />
Его сообщение: ‘.$message – формируем сам текст сообщения. $name – вставляем информацию заполненную пользователем через обращение к полям из предыдущего шага, в кавычках описываем что значит это поле, тегом<br />
делаем перенос строки, чтобы сообщение в целом было читабельно. - Content-type:text/html;charset=windows-1251 — в конце идет явное указание типа данных передаваемого в сообщении и его кодировки.
ВАЖНО!
Кодировка указанная в «голове» документа (<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
), кодировка из сообщения Content-type:text/html;charset=windows-1251 и в целом кодировка файла PHP должны совпадать иначе в получаемых на почту сообщениях вместо русских или английских букв будут выводиться «кракозябры». [A-Za-z0-9][A-Za-z0-9\._-]*[A-Za-z0-9_]*@([A-Za-z0-9]+([A-Za-z0-9-]*[A-Za-z0-9]+)*\.)+[A-Za-z]+$/ — первые несколько символов это английские буквы или точки, потом знак @, потом снова английские буквы, потом точка и потом еще несколько английских букв).
Как можете заметить такая мини проверка пишется для каждого нашего поля. Проверку на одно поле я выделил на скриншоте красным квадратом, у других полей она имеет аналогичную структуру и если возникнет необходимость добавить поле или убрать его, Вы теперь с легкостью сможете это сделать.
Полный код страниц формы
Для удобства разместили полный код страниц в открытом доступе. Итак, в корне сайта должны лежать файлы:
Подводя итоги
Формы могут обладать и гораздо более сложной структурой, включать в себя списки и много чего еще, но основные принципы их обработки и проверки, рассмотренные в этой статье, остаются везде одинаковыми.
Так что начинайте с малого, своей первой рабочей формы, и дополняйте ее по мере необходимости своими частями.
Надеюсь этот мануал окажется для Вас полезным. Если что-то было не понятно или не получается повторить – задавайте вопросы в комментариях.
О защите от спама я напишу в следующих статьях.
Оценок: 65 (средняя 4.6 из 5)
Как создать форму обратной связи в WordPress
Очередной пост по просьбе моих читателей, в нём мы пошагово разберём, как на своём сайте создать отличную форму обратной связи без использования плагинов. Всего будет два шага.
Шаг 1. Страница с формой
Создаём в папке с темой новый файл — это будет шаблон страницы с формой. Файл можно назвать как угодно, нам важно лишь его содержимое.
<?php /* * Template name: Форма обратной связи */ get_header(); // эта строчка кода у вас может отличаться /* * Тут мы будем обрабатывать ошибки и выводить соответствующие сообщения */ if( isset( $_GET['msg'] ) ) { // в случае успеха if( $_GET['msg'] == 'success' ) echo '<span>Сообщение успешно отправлено</span>'; // в случае ошибки if( $_GET['msg'] == 'error' ) echo '<span><strong>Ошибка:<strong> Проверьте правильность введённых вами данных. </span>'; // вы сами можете добавить различные другие сообщения об ошибках } /* * Антиспам-трюк * у нас есть два фейковых поля, при заполнении которых прерывается выполнение скрипта * сделаем так, чтобы они были скрыты для пользователей при помощи CSS */ echo '<style>textarea[name="comment"],textarea[name="message"]{display:none}</style>'; ?> <form action="<?php echo site_url() ?>/send.php" method="POST"> <input type="text" name="name" required="true" placeholder="Имя *" /> <input type="text" name="email" required="true" placeholder="Email *" /> <textarea name="comment"></textarea> <textarea name="message"></textarea> <textarea name="soobschenie" required="true" placeholder="Сообщение *"></textarea> <button>Отправить</button> </form> <?php get_footer(); // эта строчка кода у вас может отличаться
Шаг 2. Файл-обработчик. Отправка формы
В этой статье в качестве файла-обработчика я создал новый файл send. php
прямо в директории установки WordPress, но вы можете поместить его и в тему без проблем.
<?php // проверка на спам - просто прерываем выполнение кода, при желании можно и сообщение спамерам вывести if( isset( $_POST['comment'] ) || isset( $_POST['message'] ) ) exit; // подключаем WP, можно конечно обойтись без этого, но зачем? require( dirname(__FILE__) . '/wp-load.php'); // следующий шаг - проверка на обязательные поля, у нас это емайл, имя и сообщение if( isset( $_POST['name'] ) && isset( $_POST['email'] ) && is_email( $_POST['email'] ) // is_email() - встроенная функция WP для проверки корректности емайлов && isset( $_POST['soobschenie'] ) ) { $headers = array( "Content-type: text/html; charset=utf-8", "From: " . $_POST['name'] . " <" . $_POST['email'] . ">" ); if( wp_mail( get_option('admin_email'), 'Сообщение с сайта', wpautop( $_POST['soobschenie'] ), $headers ) ) { header('Location:' . site_url('/contact?msg=success') ); exit; } } header('Location:' . site_url('/contact?msg=error') ); exit;
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школах Epic Skills и LoftSchool.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Добавление виджетов форм обратной связи и стилей форм в Adobe Muse.
Эта ошибка может возникать по нескольким причинам. Для устранения неполадок выполните следующее:
1. Проверьте папку со спамом во входящих письмах электронной почты. Если вы найдете письма с данными форм в папке со спамом, пометьте их как проверенные сообщения.
2. Некоторые поставщики услуг хостинга не отправляют сообщения на адрес электронной почты с другим доменом сайта. Например, если ваш веб-сайт www.example.com, но в настройках формы указано отправлять сообщения на адрес электронной почты: [email protected], ваш поставщик услуг хостинга может отказаться отправлять сообщения, созданные виджетом «Формы».
Для решения этой проблемы выполните следующее:
- Обновите параметры формы для отправки сообщений электронной почты на адрес: пользователь@example.com. Это может устранить проблему и позволит получать сообщения. Если ваш поставщик услуг хостинга — GoDaddy, а в форме указан адрес электронной почты не GoDaddy, необходимо включить «remote» (удаленный) адрес электронной почты в cPanel. (Такие же действия могут потребоваться при работе с другими поставщиками услуг хостинга).
- Откройте страницу GoDaddy и перейдите к cPanel. Здесь осуществляется управление веб-сайтом.
- На главной странице cPanel прокрутите вниз до пункта «:::Email» («:::Адрес электронной почты»).
- Нажмите на параметр «MX entry», расположенный ниже «Accounts» (Учетные записи). Это настройка почтового обменника. По умолчанию подразумевается, что вы будете использовать электронную почту с доменом GoDaddy.
- Убедитесь, что выбрали «Remote Mail Exchanger» (Удаленный почтовый обменник).
- По умолчанию предполагается, что вы будете размещать электронную почту, используя GoDaddy. Если вы укажете адрес электронной почты, размещенный не на ресурсе GoDaddy, тогда GoDaddy не примет его по умолчанию. Необходимо предоставить GoDaddy разрешение на отправку форм на тот адрес электронной почты, который GoDaddy по умолчанию считает «remote» (удаленным).
3. Некоторые ИТ-отделы блокируют адреса электронной почты от [email protected] до [email protected], если сообщение электронной почты отправлено не со стандартного почтового сервера bigcompany.com. Измените параметры формы, добавив другой адрес электронной почты (первый в списке), который не оканчивается на @bigcompany.com. Таким образом, на оба адреса электронной почты будет приходить сообщение с данными формы.
4. Перейдите по ссылке http://my-site.com/scripts/form_check.php в веб-браузере и проверьте, отображаются ли у вас все три флажка зеленого цвета. Если напротив некоторых элементов не отображаются флажки зеленого цвета, значит сервер хостинга настроен неверно и виджеты «Формы» не отправляют сообщения электронной почты на указанный адрес.
По проблемам, связанным с конфигурацией сервера, обратитесь к поставщику веб-хостинга. Укажите элементы, которые не отмечены зеленым цветом на странице проверки форм, чтобы специалисты смогли помочь вам правильно настроить серверы.
Можно использовать команды этого раздела для задания способа отправки данных из формы обратной связи.
На панели Отправка данных можно задать способ, которым администратор сайта будет получать данные. Имеются следующие параметры:
Нужно задать несколько параметров для каждой возможности отправки:
Если вы не выбрали Отправить данные в виде файла в качестве Отправка данных метода в Письмо-подтверждение для пользователя, показываются следующие настройки:
По умолчанию адрес отправителя электронного письма подтверждения совпадает с электронным адресом администратора сайта, указанным в поле Адрес электронной почты пользователя в разделе Отправка данных. Введите разные Адрес электронной почты отправителя если хотите, чтобы подтверждающие письма отправлялись с другого адреса, чем используется для приема отправленных формами данных. Этот вариант можно использовать для общения с посетителями, использующими общий (info@moya_firma.com или noreply@moya_firma.com), а не персональный (imya.familiya@moya_firma.com) электронный адрес.
Наконец, можете выбрать следующее Параметры:
|
Hyper SEO — блог о SEO
Автор: ХайперСЕО
2
Июн
Иногда оптимизатору ставится задача реализации внутренней SEO на сайте, обслуживающем несколько доменов (например, филиалы организации в разных городах, у каждого филиала свой домен). В этой статье я покажу, как с помощью парочки PHP-фокусов реализовать подобный функционал на любой CMS.
Читать полностью »
Автор: ХайперСЕО
17
Июл
Конкуренция со временем уплотняется и повышает стоимость входа в любую нишу рынка. Пропорционально, всё большее значение для экономии рекламного бюджета имеет геотаргетирование рекламы и региональное SEO. Не зная особенностей поискового продвижения в регионе владельца бизнеса, невозможно сказать, какие именно действия оптимизатора приведут к желаемому результату: лидам, конверсиям, продажам.
Читать полностью »
Автор: ХайперСЕО
12
Май
Сейчас многим бизнесам различных сфер предстоит следующая задача: обзвон клиентов и выяснение, кто из них ещё является клиентом, а кого кризис не пощадил. Можно предположить, что конечная клиентская база существенно уменьшится. Значит, следующая задача — привлечение новых клиентов для возврата к показателям оборота аналогичного периода предыдущего года. Рассмотрим интернет-возможности по привлечению клиентов.
Читать полностью »
Автор: ХайперСЕО
24
Апр
Да, признаюсь, я слоупок, и до недавнего времени относился к Инстаграму скептически. Почитывал новости, видел, что соцсеть развивается, что она задаёт тренды и бросает вызов сильным интернета сего. В какой-то момент решил для экспериментов сделать аккаунт, но чтобы не подсесть (вдруг это что-то из того списка, на что можно подсесть), установил себе такие правила: «Первое правило моего аккаунта — никому не рассказывать о моём аккаунте. Второе правило — не подписываться и не лайкать…» Уже, наверное, понятно, что эксперимент получился, прямо скажем, неудачный. Далее — об удачных экспериментах.
Читать полностью »
Автор: ХайперСЕО
7
Апр
Раскрутка аккаунта, группы или страницы в социальной сети полезна не только владельцам бизнеса, продающим услуги или товары, но и простым блогерам, несущим информацию и арт в массы. Бесплатная раскрутка Вконтакте поможет продвижению начинающего бизнеса, ещё не имеющего опыта и денег для социального продвижения, а особенно блогерам с некоммерческими целями. Но кому надо бесплатно что-то для нас делать? Разбираемся ниже (спойлер: деньги — не единственный конвертируемый ресурс).
Читать полностью »
Автор: ХайперСЕО
6
Апр
Чем может быть полезна раскрутка аккаунта Twitter в 2020-м? Соцсеть Твиттер по-прежнему является мега-популярной, имеет сотни миллионов активных пользователей по всему миру, а также более полумиллиарда аккаунтов посещается хотя бы раз в месяц для общения и чтения подписок. В отличие от хайповых молодёжных сервисов, больше половины пользователей Твиттера — это взрослые и кредитоспособные люди в возрасте 35-65 лет, показ рекламы которым будет эффективен.
Читать полностью »
Автор: ХайперСЕО
14
Фев
Важным этапом продвижения сайта является сбор семантики. При этом чем обширней будет список смежных запросов (которые люди также ищут вместе с основным продвигаемым ключом), тем лучше охват аудитории, потенциально конвертируемой в лиды.
Читать полностью »
Автор: ХайперСЕО
11
Дек
И вновь пост навеян очередным запросом по работе. Пришла заявка на оценку задачи, которая начинается с пункта «Контроль и обеспечение безопасной работы сайта». Ниже скрин начала брифа, но не напрягайте зрение — он тут больше для антуража.
Да начнётся технический аудит сайта
Читать полностью »
Автор: ХайперСЕО
21
Ноя
Защищённое соединение уже лет 5 как превратилось из новомодной тенденции в необходимость. Но до сих пор есть много сайтов, работающих на незащищённом протоколе http. Владельцы сайтов не спешат подключать ssl по разным причинам: технические сложности в софте хостинга или движка, боязнь просадки позиций, нежелание улучшать сайт, предрассудки или другие проявления информационной неграмотности в теме.
Читать полностью »
Автор: ХайперСЕО
12
Ноя
Работа по SEO выполнена, заказчик получил отчёт с табличками кейвордов, цифрами, может даже графиками. По данным отчёта видна положительная динамика, но её нет в продажах на сайте, а иногда даже в трафике сайта. Действительно ли выполнена оптимизация, или исполнитель слил или увёл бюджет?
Читать полностью »
Автор: ХайперСЕО
30
Апр
Началось с того, что клиент на администрировании сайта обратился с просьбой провести аудит выполнения SEO для него от одной маленькой местной компании. Скинул отчёты по SEO, доступы в метрику, аналитику, инструменты вебмастера. Не вдаваясь в детали, работы по SEO были действительно проведены и соответствовали скромному бюджету, хоть и не соответствовали ожиданиям. Поскольку выяснилось, что поискового трафика ждать ещё не скоро (если вообще ждать), встал вопрос привлечения клиентов из других источников, хотя бы разово, но дёшево, чтобы позитивно и с премиями закрыть год. Решили попробовать E-mail рассылку. Спойлер: клиент остался доволен результатом, и даже потом пару раз заказывал мне парсинг мэйлов и телефонов со специализированных ресурсов для более точного попадания рекламы. А я получил немного опыта и информации в новой для меня теме привлечения трафика на сайт.
Читать полностью »
Как скопировать сайт с формами обратной связи
Как сделать копию сайта и настроить веб-формы
Копирование любого интернет-ресурса это не такая и простая задача, как может показаться на первый взгляд. Важно не только сделать качественный дубликат сайта, но и настроить заявки и сообщения. Если вы уже создали клон веб-сайта, то вам осталось только разобраться с тем, как работает отправка данных из форм.
Если же копии сайта у вас ещё нет, то вам однозначно сначала стоит ознакомиться со всеми возможными способами его скопировать. В результате вы узнаете про рабочие варианты сделать дубликат понравившегося вам веб-ресурса. А также, определитесь с тем, какой метод копирования подойдёт именно вам.
После того, как вы получите клон сайта перед вами будет стоять задача настроить web-формы. Поэтому стоит понимать метод по которому они будут работать. Главный принцип не сложный и заключается в передаче данных из HTML-документа на исполнительный файл, который отправляет данные, например, вам на почту.
Принимающим файлом, отвечающим за работу на сервере, и в частности за отправку сообщений, у вас будет PHP-скрипт. Этот файл является исполнительным и он необходим для широкого круга задач. В список которых входит: работа с почтой, взаимодействие с файловой системой сервера, обмен с базой данных и многое другое.
Как работает отправка заявок и сообщений на web-сайте
Итак, вы целиком скопировали Лендинг, интернет-магазин или любой другой сайт. Теперь перед вами стоит задача отправить значения из формы обратной связи так, чтобы данные приходили на почту или в Telegram-аккаунт. Давайте разберемся в том, чтобы все заявки и сообщения с веб-ресурса доходили полностью и без ошибок.
В первую очередь, вы должны понимать, как работает отправка данных с интернет-страниц. Поэтому, способу получения сообщений с web-ресурса стоит уделить отдельное внимание. Знайте что для того, чтобы отправить данные из HTML-документа в веб-разработке существует два популярных метода: GET-запрос и POST-запрос.
Работа первого заключается в том, что данные из полей формы отправляются открыто, через адресную строку браузера. При этом происходит переход на исполнительный файл и эти данные становятся видны в поле с адресом сайта. Например, формат передаваемых значений может быть следующим: ?name=иван&phone=123456
Второй метод отправляет необходимые вам значения из веб-формы с помощью POST-запроса. Этот способ является закрытым от глаз посетителя сайта, так как все данные хранятся в самом запросе. Главным преимуществом второго метода является большой объем передаваемых значений, так как адресная строка ограничена длиной.
Как настроить формы обратной связи на почту
Ранее мы выяснили, как работает оправка сообщений из формы, теперь необходимо ее настроить. Первое что вам стоит указать — это метод передачи данных. Он задаётся с помощью специального параметра method. Именно в нем стоит указать каким способом будут отправляться данные веб-формы, POST или GET запросом.
Далее вам необходимо будет указать ссылку на исполнительный файл. В форме она задаётся параметром action. Теперь вы уже знаете, что в качестве принимающего данные файла у вас должен быть PHP-скрипт. Его работа будет заключаться в том, что он получает значения из полей формы и оправляет их на указанную вами почту.
За передачу данных в этом файле будет отвечать PHP-функция mail( $to, $subject, $message, $headers ). Параметрами которой являются: почта получателя, тема, сообщение и заголовки письма. Если с первыми тремя значениями все понятно, то с четвертым могут возникнуть вопросы. Этот параметр обязательно рекомендуется указать.
Частая ошибка начинающих специалистов в том, что они не уделяют должного внимания последнему параметру. Стоит понимать, что заголовки важная составляющая сообщения, так как содержат информацию об отправителе. Ещё они позволяют указать кодировку, чтобы не получить иероглифы вместо текста.
Как оправить заявки и сообщения в Telegram
Вам необходимо чтобы заявки с сайта приходили в ваш Телеграм-аккаунт? Для того чтобы это реализовать вам в первую очередь придется скачать приложение Telegram на телефон или аналогичную программу на компьютер. Далее необходимо будет зарегистрировать профиль и уже затем можно настраивать отправку.
Передача данных web-формы в Телеграм, по своему принципу, очень похожа на оправку сообщений на почту. В этом случае вам также придется указать в форме ссылку на файл, который будет принимать значения формы и отправлять их дальше. Напомним, ссылка задаётся через специальный параметр action.
Ещё потребуется задать метод с помощью которого данные формы будут передаваться в исполнительный PHP-скрипт. Он указывается параметром method и будет содержать одно из двух значений, либо POST, либо GET. Далее вам необходимо будет заполучить ID аккаунта адресата в Телеграме. Это делается через специального бота.
Главное, что вам предстоит сделать — это создать своего личного бота, который будет передавать сообщения с сайта. Необходимо будет узнать его Token, то есть ключ. При этом работа исполнительного файла будет связана с функцией fopen. Именно она будет содержать запрос с сообщением, Token-ключ отправителя и ID получателя.
Почему могут не работать web-формы
После того, как вы сделаете клон веб-ресурса и укажите необходимые параметры в форме обратной связи перед вами может встать проблема с ее работой. Значения из полей возможно не будут оправляться на исполнительный файл, а переадресация на него и вовсе может отсутствовать. В чем заключается неполадка?
Одной из причин по которой отправка сообщений будет невозможна — эта работа определенных скриптов. Возможно они будут оправлять значения полей формы другим способом. Например, используя скрипты, данные можно передать, без перехода на исполнительный файл. Такое можно реализовать с помощью JavaScript.
Для того, чтобы решить подобного рода проблему вам придется найти скрипт, отвечающий за работу формы и отключить его. Только после этого вы сможете настроить отправку сообщений так, как необходимо вам. При этом потребуется указать ссылку на ваш исполнителей файл и задать метод передачи данных.
Если же у вас не получается клонировать сайт и настроить форму обратной связи, то вы всегда можете обратиться к специалистам онлайн-сервиса. В результате вы получите качественный дубликат понравившегося ресурса с исправно работающей формой. Узнайте про то, как заказать копию веб-сайта прямо сейчас!
Обратная связь для сайта с помощью скриптов форм на Html и Php, а так же онлайн конструкторов и генераторов
Обновлено 15 мая 2021
- Формы обратной связи для Joomla и WordPress
- Php скрипты форм обратной связи для сайта
- Конструкторы и генераторы форм обратной связи
- Контактная форма для Html сайтов (без Php)
Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня я хочу поговорить о способах создания форм обратной связи, заказа, контактных и других типов, которые могут понадобиться вебмастеру для организации удобной коммуникации со своими посетителями или клиентами.
Понятно, что при использовании Joomla и WordPress вопрос обратной связи или заказа можно решить использованием различных расширений или плагинов, но есть способы, которые подойдут абсолютно для любого проекта, построенного как на чистом Html, так и использующего движок Cms (скрипты, cms, конструкторы и генераторы форм обратной связи).
Для работы классической формы в Html требуется скрипт обработчика, который чаще всего пишется на языке Php, поэтому желательно, чтобы ваш хостинг имел его поддержку (правда, сейчас даже хостинги предоставляемые бесплатно поддерживают Php).
Хотя, существуют решения и не требующие поддержки Php, и о них тоже будет упомянуто в этой статье. Никаких особо подробных описаний по установке и настройке в этой статье не будет, ибо это лишь обзор имеющихся вариантов, которые сейчас можно найти в сети.
Буду вам крайне признателен, если вы в комментариях приведете свой пример создания систем обратной связи (желательно оригинальный, красивый и функциональный) со ссылкой на описание и страницу с примером (я пока нахожусь в процессе поиска идеального решения).
Формы обратной связи для Joomla и WordPress
Давайте посмотрим, как можно организовать обратную связь в Joomla и WordPress стандартными средствами или с помощью расширений.
В Джумле уже по умолчанию имеется бесплатный компонент «Контакты», реализующий данный функционал, о настройках которого вы можете прочитать по приведенной ссылке. Как правило, в дистрибутив этого движка по умолчанию включают самые стабильные расширения, но не всегда самые функциональные. Да и разработчики расширений для Joomla не спят и периодически появляются новые более функциональные решения.
Так вы можете скачать отдельный модуль обратной связи для Джумлы под названием Rapid Contact, который может дать вам новые возможности и функционал (см. демо). Про настройку и возможности этого модуля сможете прочитать здесь. К тому же, стандартный компонент в Joomla для реализации обратной связи не обладает достаточной гибкостью и не позволяет использовать защиту от спама (капчу), а также не позволяет создавать несколько разных контактных форм на сайте.
Эти проблемы решаются с помощью альтернативного компонента для этого движка под названием aiContactSafev, который позволяет создавать на сайте любое количество форм обратной связи (можно привязать их к разным E-mail адресам) и имеет возможность добавлять поле для загрузки файлов, равно как и любые другие типы полей.
В нем осуществляется проверка на правильность заполнения полей с выдачей сообщений об ошибках, а также aiContactSafev хранит архив всех отправленных данных и позволяет его просмотреть из админки Джумлы.
Этот компонент в своем составе имеет очень гибко настраиваемую капчу (ввод кода при отправке данных для зашиты от спама). Его можно бесплатно скачать для разных версий Джумла, а прочитать про его настройку вы сможете тут.
Теперь давайте поговорим за WordPress. Лично я пока еще не определился с этим и у меня на странице контактов красуется обычный E-mail, что в общем-то не очень здорово, ибо он уже давно попал в спам-базу, и если бы я не сумел привязать почту для домена через Google Apps к обычному ящику в Гмайле, то поток спама меня бы уже давно захлестнул с головой.
Но спаморезка Гугловской почты работает хорошо и даже чересчур хорошо, ибо и ваши письма, уважаемые читатели, иногда попадают под ее горячую руку, за что, пользуясь моментом, приношу свои извинения.
В общем-то в этом и состоит основное преимущество формы обратной связи — она позволяет сохранить инкогнито вашего почтового адреса для спамеров. Ну и еще она обычно оформлена в довольно приятную оболочку, что может добавить плюсик в отношении к вашему проекту пользователей, особенно это актуально для коммерческих ресурсов, когда удобная форма заказа или обратной связи может повысить конверсию (доход).
Собственно, по поводу WordPress. Есть один очень популярный и очень мощный плагин, который зовется Contact Form 7. Популярность его просто зашкаливает, а это значит, что что-то в нем такое есть. Правда для реализации функции капчи вам придется поставить еще дополнительный плагин Really Simple CAPTCHA.
Форму обратной связи можно будет вставить на любую страницу или в любой пост вашего блога на WordPress, а также в виджет. Фактически это своеобразный конструктор для WordPress, позволяющий обновлять информацию в форме без обновления страницы (на технологии ajax). Лично я испытывал этот плагин на KtoNaNovenkogo.ru примерно пару лет назад, и тогда он мне показался очень тяжелым и неуместно громоздким для реализации стоящих передо мною целей (обратная связь).
Понятно, что за это время Contact Form 7 мог стать уже гораздо более подходящим для реализации стоящих перед нами задач и поэтому предлагаю вам опробовать его в работе самостоятельно, опираясь на довольно подробное описание. Если вы пользуетесь каким-либо другим хорошим и легким плагином, то чиркните, пожалуйста, об этом пару слов в комментариях.
Так, это мы говорили про реализацию обратной связи в Joomla и WordPress с помощью соответствующих расширений.
Но существует еще несколько способов:
Создание формы самостоятельно. Для этого нужно будет написать ее код и оформить внешний вид с помощью Css стилей, а еще написать на Php для нее обработчик (в принципе, знаний, полученных из видеокурса Попова по Php, будет достаточно) и затем добавить CAPTCHA, проверку правильность заполнения полей и что-то еще. Сразу скажу, что сделать это будет не просто.
Все у того же Евгения Попова есть серия бесплатных уроков на его блоге, посвященных самостоятельному созданию обратной связи для сайта:
Три стратегии продвижения сайтов Скачать (150 Мб) Html для начинающих Скачать (340 Мб) Css для начинающих Скачать (700 Мб) Работа с сайтом в Dreamweaver Скачать (140 Мб) Как получить домен и купить хостинг Скачать (120 Мб) Как создать свой видеокурс Скачать (600 Мб) Как вы можете видеть, знаний и времени потребуется довольно много. Поэтому можно будет для ускорения воспользоваться уже готовыми скриптами или же онлайн конструкторами и генераторами форм.
В интернете можно найти довольно много скриптов различных форм — от самых простых (однако, требующих от вашего хостинга поддержку Php) до очень навороченных, которые устанавливаются на сайт подобно полноценной CMS и требуют для своей работы не только поддержку PHP, но и базы данных.
Данные скрипты можно будет установить и использовать практически для любого проекта — как статического (на Html), так и динамического (на Cms). В общем-то, довольно-таки удобный и универсальный инструмент, но вам придется, скорее всего, перебрать много вариантов, чтобы найти что-то подходящее именно вам.
- Онлайн конструкторы и генераторы скриптов обратной связи. В несколько шагов мастера вы сможете настроить внешний вид вашей будущей формы и получить ее код для установки на свой сайт. Правда это будет только Html часть кода, а обработчик на Php вам придется использовать свой. Но есть онлайн сервисы, которые предлагают использовать для этого сторонние обработчики, расположенные на их сервере.
Php скрипты форм обратной связи для сайта
Итак, давайте рассмотрим сначала несколько скриптов, которые можно бесплатно скачать и установить на свой сайт. Простенький, но довольно наглядный вариант (использующий капчу для защиты от спама) можно будет бесплатно скачать отсюда. Есть вариант обратной связи:
Там и форма заказа для сайта:
Он представляет из себя архив, содержащий в себе папку, которую нужно будет скопировать в корневую директорию своего сайт (или в любую другую). Далее на странице с контактами вы указываете ссылку с прописанным в ней путем до файла «index.php» из папки «sendmail». Для моего блога это было бы примерно так:_https://ktonanovenkogo.ru/sendmail/index.php (если бы я скопировал каталог со скриптом в корневую папку).
Настройки осуществляются с помощью редактирования содержимого файла «config.php» из директории «sendmail»:
В первой строчке вы указываете адрес почтового ящика, на который будут приходить письма, отправленные с помощью этой формы, а во второй строчке указываете желаемую кодировку текста (utf 8, windows 1251). В ряде последних строчек Php кода вы сможете поменять подписи к полям формы обратной связи или заказа. Вот и все.
Данная форма хорошо отлажена и работает стабильно, но вот ее внешний вид, возможно, покажется кому-то слишком спартанским. Лично мне очень нравятся варианты, где с помощью ajax выводятся сообщения об ошибках заполнения полей и об успешной отправке сообщения. Такие формы не требуют для этого перезагрузки страницы и производят очень приятное впечатление на посетителей.
Существует довольно привлекательный скрипт под названием Super AJAX Contact Form (можно использовать его и для заказа), построенный на основе PHP и jQuery с использованием Ajax:
Скачать его можно будет с сайта разработчика. Правда все надписи в полях будут англоязычными, но вы потом всегда сможете поменять их на русские, внося изменения в соответствующий файл скрипта и используя Google translate при необходимости.
Установка его на сайт ничем не отличается от описанной ранее и заключается в копировании папки со скриптом в корень, а на странице контактов останется только прописать ссылку до файла «index.php» (для моего блога:_https://ktonanovenkogo.ru/code/index.php).
Настройки формы обратной связи производятся в файле «\code\assets\xml\config.php», где можно прописать как отдельный E-mail для различных тем, так и один для всех (смотрите об этом подробнее в видеоуроке).
В Super AJAX Contact Form осуществляется проверка правильности заполнения всех полей и сразу же (без перезагрузки страницы — ajax во всей красе) выдаются подсказки над соответствующими полями, что сильно повышает юзабилити обратной связи:
При успешной отправке данных также выдается соответствующее сообщение. Это помогает пользователю понять, что именно сейчас происходит:
У меня возникли только замечания по работе капчи и желание интегрировать данную обратную связь в свою страницу с контактами, ибо открывать форму в отдельном окне без внедрения в дизайн блога мне кажется не совсем оптимальным решением. В общем-то на странице автора видеоурока в комментариях приводится решение этих проблем и вы можете с ними ознакомиться.
Ну и на затравочку хочу привести пример скрипта обратной связи, который можно сравнить с мини Cms, ибо у него есть своя админка, мастер установки, и для его работы вам потребуется создать базу данных (или использовать уже имеющуюся). Взамен вы получаете очень функциональный конструктор, позволяющий реализовать практически все, что угодно.
Данный скрипт называется Генератор форм обратной связи, скачать его можно совершенно бесплатно по приведенной ссылке. Обратите внимание, что для скачивания доступны три версии скрипта, которые отличаются только используемой в них капчей:
Скрипт осуществляет проверку на заполненность всех полей формы, на правильность ввода E-mail адреса, защищает от спама с помощью капчи и позволяет добавлять в практически любые дополнительные поля (загрузка файла, чекбоксы, радиокнопки, поля со множественным выбором и т.д.).
Особенностью установки этого скрипта обратной связи является использование им базы данных, которую вам нужно будет предварительно создать или же использовать уже имеющуюся (его таблицы будут помечены в ней своим префиксом, что поможет их затем без труда удалить при необходимости). Я уже писал про то, как создать базу данных в cPanel или скачать, установить и настроить phpMyAdmin.
Для описания процесса установки и настройки данного скрипта потребуется написание отдельной статьи, поэтому предлагаю вам скачать и посмотреть подробный видеоурок по этому поводу, где также будет приведено описание процесса интеграции скрипта в дизайн вашего сайта.
Конструкторы и генераторы форм обратной связи
Есть довольно много онлайн конструкторов и генераторов форм обратной связи. Например, этот сервис предлагает вам довольно удобный и функциональный интерфейс для создания конструкций практически любой сложности. На первом шаге вам предложат выбрать цветовую схему:
После чего вам нужно выбрать из левой части окна нужные поля для будущей формы и затем, щелкая по ним, произвести их более тонкую настройку (задать подписи полей на русском языке, выбрать ширину поля, сменить тип и ввести предварительный текст):
Добавленные поля можно менять местами простым перетаскиванием мыши, удалять и повторно редактировать:
В общем, интерфейс этого онлайн конструктора очень и очень современный и удобный. После того, как вы расположите все нужные вам поля в нужном порядке и приведете все нужные им настройки, можете нажать на кнопку сохранения (расположена внизу). На следующей странице вам предложат перейти к просмотру и скачиванию скрипта обратной связи или же вернуться к редактированию:
То, что кнопка «Submit» осталась не переведенной, не есть большая проблема, ибо это можно будет сделать непосредственно в полученном коде.
Есть одно «но» — с помощью этого онлайн конструктора вы получите только Html код, а вот Php обработчик данных вам придется использовать свой. О том, где взять обработчик, можете узнать из этого видеоурока.
Обратная связь для Html сайтов (без Php)
Есть онлайн сервисы, предоставляющие бесплатно свои собственные Php обработчики, которые будут расположены на их серверах. К такому типу относится конструктор на ip-whois:
Не фонтан, конечно же, в плане изысков дизайна, но зато такую форму можно создать за пять секунд и еще за минуту поставить абсолютно на любой сайт, даже расположенный на хостинге без поддержки Php.
После настройки внешнего вида и добавления нужных полей нажмите на кнопку «Просмотр», а затем на кнопку «Настроил» и скопируйте код. Вставьте его на страницу контактов и нажмите на расположенную под кодом кнопку «Вставил».
После этого вводите адрес страницы вашего сайта, куда вставили код и E-mail адрес, на который должны приходить сообщения пользователей, отправленные через эту самую форму.
Есть еще один очень похожий по функционалу генератор форм обратной связи. Созданные с помощью него конструкции тоже можно будет размещать на хостингах без поддержки Php (достаточно указать адрес страницы и E-mail, на который будут отправляться сообщения). Рассказывать про него много я не буду, ибо он по своей сути очень похож на описанный чуть выше конструктор.
Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru
Создание контактной формы по электронной почте
по kirupa | 11 ноября 2011
Есть вопросы? Обсудите это руководство по HTML с другими на форумах.
Один из самых простых способов заставить людей связаться с вами — это
создав контактную форму. Если вы не использовали контакт
через некоторое время, нажмите на снимок экрана ниже, чтобы попробовать мой
из:
[ вперед, продолжать —
попробуйте! ]
К концу этого урока вы научитесь создавать простую контактную форму.
(как и тот, который вы видите выше)
который использует немного PHP для отправки данных формы прямо на ваш
Адрес электронной почты.
Анатомия этой контактной формы
Прежде чем мы начнем погружаться в HTML, CSS и PHP, чтобы создать
контактная форма, давайте посмотрим на высоком уровне, как данные из вашей формы находят путь
в свой почтовый ящик.
Следующая диаграмма должна помочь подготовить почву:
У вас в основном три файла: форма, PHP-скрипт, подтверждение.
страница. Кто-то заполняет форму и нажимает «Отправить». Когда кнопка Отправить
, данные из вашей формы передаются в PHP-скрипт, и это
скрипт форматирует данные таким образом, чтобы их можно было отправить по почте.Как только ваши данные были
отправлено по почте, скрипт PHP загружает страницу подтверждения, позволяя форме
отправитель знает, что данные отправлены.
Вот и все, но давайте немного углубимся. Форма содержит различные элементы пользовательского интерфейса, которые вы используете для захвата
и представить
data — текстовые поля, текстовое поле и кнопка отправки:
Когда вы нажимаете кнопку отправки, ваши данные передаются в скрипт PHP, который
живет на своей странице:
Этот скрипт обрабатывает ваши данные и отправляет их по электронной почте.
тебе.Этот сценарий также содержит некоторую логику для отображения
страница подтверждения после отправки данных формы:
В следующих нескольких разделах вы создадите и заполните все три
эти страницы. Первая цель — быстро подготовить вас к работе с
Форма обратной связи. Как только вы это сделаете, мы вернемся и посмотрим на
подробности того, почему все выглядит и работает именно так.
Начало работы
Для этого руководства вам понадобится веб-сервер, способный запускать
PHP.Если у вас нет такого сервера, дайте
сделай выстрел. Они спонсируют хостинг для этого сайта, и они
потрясающие!
На вашем веб-сервере вам нужно будет создать два файла HTML и один
Файл PHP:
- contactform.htm
- подтверждение.htm
- mailer.php
Убедитесь, что все эти файлы находятся в одном каталоге в Интернете.
сервер:
После создания этих файлов вы заполните их
контент, который я предоставлю.
Чтобы получить максимальную отдачу от этого урока, я предлагаю вам знать некоторые
основные приемы HTML и CSS, такие как определение содержимого и его стили.
В
Раздел CSS Tutorials на этом сайте поможет вам быстрее, если вы
не слишком знакомы с ними.
Я уже упоминал, что в этом примере несколько раз используется PHP, чтобы
отправить электронное письмо. Вам не нужны знания PHP, чтобы сделать все
эта работа. Я предоставлю код, укажите куда указывать почту
адрес, а затем дайте базовое объяснение того, почему код работает
так оно и есть.
Хорошо, вперед!
Создание контактной формы
Откройте contactform.htm и добавьте следующие HTML и CSS в свой
документ:
О чем вы думаете? <стиль> input, textarea { отступ: 5 пикселей; маржа: 10 пикселей; семейство шрифтов: Cambria, Cochin, serif; размер шрифта: средний; font-weight: жирный; наброски: нет; } п { семейство шрифтов: Cambria, Cochin, serif; размер шрифта: большой; нижнее поле: -5 пикселей; } input [type = text], textarea { ширина: 350 пикселей; цвет фона: #DDEDFF; граница: 1px solid # 97C9FF; } input [type = submit] { ширина: 100 пикселей; цвет фона: # 669900; граница: 1px solid # 336600; размер шрифта: большой; цвет: #FFFFFF; } input [type = submit]: hover { цвет фона: # 78B300; курсор: указатель; } input [type = submit]: active { цвет фона: # 4A6F00; } h2 { семейство шрифтов: "Trebuchet MS", Arial, sans-serif; размер шрифта: 2.1em; цвет: # 3399FF; } тело { отступ: 10 пикселей; цвет фона: # F4F4F4; }О чем вы думаете?
Не волнуйтесь, если вы не знаете, что на самом деле весь приведенный выше код
делает.Содержимое проанализируем позже. А пока просто скопируйте / вставьте все
это как содержимое contactform.htm и сохраните документ.
При предварительном просмотре документа в браузере вы увидите контакт
форма, которая должна выглядеть так же, как на следующем снимке экрана:
Пока не нажимайте кнопку «Отправить». Если вы нажмете кнопку «Отправить», вы обнаружите, что на самом деле ничего не
бывает. Мы исправим это в ближайшее время … если быть точным!
Добавление кода PHP
Следующее, что мы сделаем, это добавим PHP-код, необходимый для создания нашей формы.
на самом деле работают.Откройте mailer.php и добавьте следующий код:
- Php
- if (isset ($ _ POST [‘submit’]))
{ - $ к =
«[электронная почта защищена]»; - $ тема =
«Что вы думаете о подчинении!»; - // данные, предоставленные посетителем
- $ name_field
= filter_var ($ _ POST [‘имя’],
FILTER_SANITIZE_STRING); - $ email_field
= filter_var ($ _ POST [‘электронная почта’],
FILTER_VALIDATE_EMAIL); - $ комментарий =
filter_var ($ _ POST [‘комментарий’],
FILTER_SANITIZE_STRING); - // построение сообщения
- $ тело =
«От: $ name_field \ n \ n Электронная почта:
$ email_field \ n \ n Сообщение: \ n \ n $ comment «; - //…и понеслось!
- почты ($ в,
$ тема,
$ body); - // перенаправляем на подтверждение
- заголовок (‘Расположение:
подтверждение.htm ‘); - } еще
{ - // как-нибудь обработать ошибку
- }
- ?>
Прежде чем сохранить этот файл и закрыть его, замените [email protected]
на адрес электронной почты, на который вы хотите получать обратную связь:
- $ к =
«[электронная почта защищена]»;
Это чрезвычайно важно.Если вы этого не сделаете, оставьте свой отзыв
посетители просто никогда не дойдут до вас!
Вы почти закончили.
Страница подтверждения
Последнее, что мы собираемся сделать, это добавить нашу страницу подтверждения. Открыть
confirm.htm и добавьте в него следующий код:
- <мета charset = "utf-8">
Отлично
Успех!- <мета content = "php, контакт, форма, мышление "name =" keywords ">
- <мета content = "Отлично успех! "name =" description ">
- <стиль>
- п {
- семейство шрифтов:
Камбрия,
Кочин, засечки; - размер шрифта:
большой; - край-низ:
-5px; - }
- h2 {
- семейство шрифтов:
«Требушет МС»,
Arial, без засечек; - размер шрифта:
xx-большой; - цвет:
# 3399FF; - }
- кузов {
- набивка:
10px; - цвет фона:
# F4F4F4; - }
& nbsp;
Спасибо
Вы!У нас
получил ваш
обратная связь и
мы будем
вернуться
тебе
скоро.
Сохраните этот файл и просмотрите его в своем браузере. Вы увидите что-то
что выглядит следующим образом:
На этом вы закончили добавление контента в HTML и PHP.
страниц.
Прямо сейчас, если вы предварительно просматриваете свою контактную форму, заполните ее и нажмите
Отправить, вы увидите указанную выше страницу подтверждения, отображаемую в вашем
браузер.
Что еще более важно, электронное письмо будет отправлено на указанный вами адрес
в почтовике .php , который будет выглядеть следующим образом
изображение:
Электронное письмо выглядит некрасиво, но в нем есть отзыв,
Заполнил и отправил!
За кадром
Прямо сейчас у вас есть рабочий пример, который вы создали в основном
копирование и вставка предоставленного мной кода. В следующей паре
разделов, давайте глубже посмотрим, что вы сделали, чтобы у вас
понимание того, почему ваша контактная форма работает именно так.
Взгляд на саму форму
Наша контактная форма (контактная форма.htm) состоит только из стандартных
Теги HTML и CSS. Я собираюсь отложить стили вещей,
но вместо этого давайте посмотрим на элементы формы и на то, что они содержат
помогает вашему PHP-скрипту знать, что отправлять по электронной почте.
Элементы формы содержатся внутри
тег формы:
- <форма действие = "mailer.php" method = "POST">
Имя
Электронная почта
(Необязательно)Комментарий
Первое, на что следует обратить внимание, это то, что делает наша форма, когда вы ее отправляете:
- <форма действие = "почтовая программа.php " method = "POST">
Мы объявляем файл mailer.php как
получатель / обработчик данных формы. Используя
Метод POST, мы
укажите, что данные, содержащиеся в нашей форме, нужно будет отправить или протолкнуть
вне.
Итак, у нас есть средства для отправки данных, но вам может быть интересно
какие данные мы на самом деле отправляем? Данные, которые необходимо отправить, определяются путем привязки вашего
элементы формы ‘ имен с их значениями .
В нашем примере имена наших элементов формы выделены
желтый внизу:
- <форма действие = "mailer.php" method = "POST">
Имя
Электронная почта
(Необязательно)Комментарий
Значение, которое идет с этими именами, — это контент, который вы вводите
каждый из этих элементов формы:
[значение — это то, что вы фактически предоставляете элементу формы]
В приведенном выше примере значение нашего текстового поля с именем name
будет Кирупа .
Когда вы нажимаете кнопку «Отправить», ваш браузер принимает все эти
пары имя / значение и передает их mailer.php .
Поскольку наша форма имеет входной элемент
введите «Отправить», нажав на нее,
автоматически заставляет вашу форму делать то, что ее
атрибуты действия и метода
указать. В нашем случае это означает отправку всех данных в
mailer.php .
Следует отметить, что для всего этого не требуется JavaScript или дополнительный код.
Работа. Эта функция является частью логики, встроенной в ваш браузер.
для обработки форм.
Просмотр mailer.php
Настоящее волшебство происходит внутри файла mailer.php, где у вас есть
Код PHP, который принимает данные вашей формы и отправляет их по электронной почте на адрес
адрес, который вы указываете.
На самом деле это не так сложно, как кажется. Вот код, который
у вас сейчас:
- Php
- if (isset ($ _ POST [‘submit’]))
{ - $ к =
«[электронная почта защищена]»; - $ тема =
«Что вы думаете о подчинении!»; - // данные, предоставленные посетителем
- $ name_field
= filter_var ($ _ POST [‘имя’],
FILTER_SANITIZE_STRING); - $ email_field
= filter_var ($ _ POST [‘электронная почта’],
FILTER_VALIDATE_EMAIL); - $ комментарий =
filter_var ($ _ POST [‘комментарий’],
FILTER_SANITIZE_STRING); - // построение сообщения
- $ тело =
«От: $ name_field \ n \ n Электронная почта:
$ email_field \ n \ n Сообщение: \ n \ n $ comment «; - //…и понеслось!
- почты ($ в,
$ тема,
$ body); - // перенаправляем на подтверждение
- заголовок (‘Расположение:
подтверждение.htm ‘); - } еще
{ - // как-нибудь обработать ошибку
- }
- ?>
Давайте рассмотрим код здесь подробно, начиная с самого верха:
- if (isset ($ _ POST [‘submit’]))
{
Первое, что я делаю, это проверяю, загружена ли эта страница как
результат отправки формы.Это всего лишь простая проверка, чтобы убедиться, что эта страница
не вызывается случайно без надобности.
Следующие две строки довольно просты:
- $ к =
«[электронная почта защищена]»; - $ тема =
«Что вы думаете о подчинении!»;
Я объявляю две переменные, вызываемые и
предмет. К
переменная содержит адрес электронной почты, который вы хотите, чтобы данные вашей формы были
отправлено по почте. Субъектная переменная
указывает тему вашего электронного письма.
Теперь все становится интереснее:
- // данные, предоставленные посетителем
- $ name_field =
filter_var ($ _ POST [‘имя’],
FILTER_SANITIZE_STRING); - $ email_field =
filter_var ($ _ POST [‘электронная почта’],
FILTER_VALIDATE_EMAIL); - $ комментарий =
filter_var ($ _ POST [‘комментарий’],
FILTER_SANITIZE_STRING);
Как и раньше, я объявляю некоторые переменные, называемые
name_field,
email_field и комментарий.в отличие
ранее обратите внимание, что значения не являются жестко запрограммированными строками.
Вместо этого значения состоят из данных формы, которые я связал на основе
по значению имени я дал элементы формы внутри contactform.htm. В
другими словами, имена
наших различных элементов формы ( имя , электронная почта ,
комментарий ) предоставляются как ключ, указывающий на
Фактические данные, которые они хранят:
- // данные, предоставленные посетителем
- $ name_field =
filter_var ($ _ POST [‘имя’],
FILTER_SANITIZE_STRING); - $ email_field =
filter_var ($ _ POST [‘электронная почта’],
FILTER_VALIDATE_EMAIL); - $ комментарий =
filter_var ($ _ POST [‘комментарий’],
FILTER_SANITIZE_STRING);
Следует отметить, что данные из формы не назначаются
переменные напрямую.Я использую PHP filter_var
метод очистки данных, чтобы убедиться, что они ничего не содержат
злонамеренный.
В следующей строке мы строим наше сообщение:
- // построение сообщения
- $ тело =
«От: $ name_field \ n \ n Электронная почта:
$ email_field \ n \ n Сообщение: \ n \ n $ comment «;
В переменной body хранится электронная почта.
сообщение, содержащее комбинацию статических строк, а также переменных
что вы объявили несколькими строками ранее, которые содержат данные нашей формы.Этот
стандартная обработка строк, а \ n
символы обозначают разрывы строк.
Получив сообщение электронной почты, пора его отправить:
- // … и понеслось!
- почты ($ в,
$ subject, $ body);
Отправить почту на PHP очень просто. Вы используете встроенный
Почта
функция и передайте три аргумента:
- Адрес электронной почты, на который вы хотите отправить почту
- Тема письма
- Содержание вашего электронного письма
Эти три части информации хранятся в нашем
к, предмету,
и переменные тела соответственно.
А теперь … последняя строка:
- // перенаправление на подтверждение
- заголовок (‘Расположение:
подтверждение.htm ‘);
Теперь, когда наша почта отправлена, осталось только показать нашу
страница подтверждения. Это делается путем вызова
функция заголовка и указание перенаправить на наш
Страница подтверждения.htm. Просто как тот.
Ну вот и
все, что есть в этом руководстве. Один из самых сложных
то, что нужно понять, — это взаимодействие между вашими HTML
страницу и серверный PHP-скрипт.Как только вы освоите
что создание контактной формы будет одним из самых простых
вещи, которые ты будешь делать.
Есть вопрос или просто хотите поболтать? Прокомментируйте ниже или загляните на наши форумы (на самом деле это одно и то же!), Где кучка самых дружелюбных людей, с которыми вы когда-либо столкнетесь, будут рады помочь вам!
Когда Кирупа не занят тем, что пишет о себе от третьего лица, он практикует социальное дистанцирование… даже в своих профилях в Twitter, Facebook и LinkedIn.
Hit Подпишитесь, чтобы получать полезные советы, уловки, селфи и многое другое, доставленные лично вам на почту.
[ИСПРАВЛЕНО] Почему Contact Form 7 не отправляет электронные письма?
Вам нужно заполнить контактную форму 7, не отправляя электронное письмо?
Не волнуйтесь: у нас есть решение для вас.
В WordPress люди часто сталкиваются со всевозможными проблемами из-за того, что их формы не отправляют электронную почту. Итак, в этом посте мы покажем вам, почему контактная форма 7 больше не отправляет электронные письма, и что вы можете сделать, чтобы эти электронные письма с контактной формой работали на 100% надежно.
Исправьте электронную почту WordPress прямо сейчас
Почему контактная форма 7 не отправляет электронные письма
Контактная форма 7 письма отправлены, но не получены? Вы не одиноки.
Представьте себе: формы вашего веб-сайта выглядят так, как будто они работают правильно. Кто-то отправил вашу форму для генерации лидов, и они получили сообщение об успехе.
Но письмо никогда не попадает в ваш почтовый ящик.
Если вы используете контактную форму 7, мы объясним, почему часто бывает, что контактная форма 7 не отправляет электронные письма.
Есть 2 основные причины:
Ваши электронные письма считаются спамом
Поддельные электронные письма похожи на спам. Спуфинг означает, что кто-то подделывает адрес отправителя.И любые электронные письма, которые подозреваются в подделке, редко даже попадают в почтовый ящик.
К сожалению, Contact Form 7 отправляет вам уведомление, когда форма заполняется, используя адрес электронной почты по умолчанию в качестве отправителя. Это часто отмечается как спуфинг, потому что это электронное письмо является общим и маскирует фактического отправителя электронного письма (ваш сайт WordPress).
По этой причине электронные уведомления Контактной формы 7 обычно теряются и никогда не попадают в ваш почтовый ящик.
Ваша хостинговая компания не использует почтовую функцию PHP
Еще одна причина, по которой вы, вероятно, столкнетесь с проблемой, по которой контактная форма 7 не отправляет электронные письма, связана с функцией почты PHP и вашим хостинг-провайдером.
Если ваш веб-хостинг не поддерживает почтовую функцию PHP (которая в наши дни очень распространена), это может быть причиной того, что Contact Form 7 не отправляет электронную почту. Функция WordPress wp_mail ()
использует почту PHP для отправки электронных писем с вашего сайта, включая электронные письма, созданные плагинами контактной формы.
Даже если ваш хост разрешает вашему сайту использовать почту PHP, это довольно плохой способ отправлять электронные письма. Почта PHP очень проста, и WordPress не может добавлять какую-либо информацию для аутентификации в создаваемые им электронные письма.Это означает, что ваши электронные письма Контактной формы 7 могут выглядеть как обычные спам-сообщения.
Вот почему мы рекомендуем использовать SMTP для отправки электронных писем из WordPress вместо использования почтовой функции PHP по умолчанию.
Итак, теперь, когда вы знаете причины, по которым Contact Form 7 не отправляет электронные письма, давайте посмотрим, как решить эту проблему.
Как исправить, что контактная форма 7 не отправляет электронное письмо
Есть 2 основных способа решить эту проблему.
- Попробуйте изменить адрес отправителя
- Используйте контактную форму 7 с WP Mail SMTP
Работа первого шага не гарантируется, но мы все равно рекомендуем проверить настройки контактной формы 7, поскольку использовать значения по умолчанию не рекомендуется.
Давайте посмотрим.
1. Попробуйте изменить адрес отправителя
В настройках по умолчанию контактной формы 7 используется общий адрес отправителя для каждой формы: [электронная почта защищена]
Большинство из нас никогда не создают почтовый ящик электронной почты или пользователя с именем «WordPress», поэтому велика вероятность, что этот адрес отправителя даже не существует на вашем сервере.
Использование общего или несуществующего адреса в контактной форме сбивает посетителей с толку. Это также означает, что письмо может выглядеть как спам, когда ваш хост-сервер отправляет его.Это распространенная проблема, с которой сталкиваются люди с контактной формой 7 и ее настройками по умолчанию.
Чтобы исправить это, вы можете сделать так, чтобы электронные письма, отправляемые из контактной формы 7, приходили с реального адреса, который вы контролируете. Когда вы избавитесь от общей части «WordPress», вероятность того, что они будут подделаны, снизится. Дополнительным преимуществом является то, что ваши клиенты действительно смогут связаться с вами, если они будут использовать этот адрес электронной почты в будущем.
Создайте новый адрес электронной почты (необязательно)
Если у вас еще нет почтового ящика, который можно использовать в качестве отправителя, вам нужно создать его в своей учетной записи хостинга.
Мы покажем вам, как это сделать, на примере Bluehost.
Перейдите в панель управления cPanel на веб-сайте своего веб-хостинга и найдите настройки электронной почты.
Найдите домен, который вы хотите использовать с новой учетной записью электронной почты, и щелкните Управление .
Слева нажмите кнопку Создать , чтобы добавить новый адрес электронной почты.
На экране Create an email account вам нужно настроить свой почтовый ящик следующим образом:
- Домен : выберите доменное имя, которое соответствует вашему веб-сайту
- Имя пользователя : это будет часть до @ в вашем адресе электронной почты
Затем нажмите синюю кнопку Создать , чтобы завершить настройку нового адреса электронной почты.
Теперь давайте рассмотрим настройки контактной формы 7, чтобы электронные письма отправлялись из этого нового почтового ящика.
Изменить адрес электронной почты отправителя в контактной форме 7
Чтобы найти свои контактные формы, нажмите Контакт »Контактные формы на боковой панели.
Найдите форму, с которой у вас возникли проблемы, и наведите на нее указатель мыши. Щелкните ссылку Изменить .
На странице Edit Contact Form прокрутите немного вниз и щелкните вкладку Mail .
Здесь вы измените поле From на новый адрес электронной почты, который вы только что создали в cPanel.
Затем убедитесь, что в разделе Additional headers указано
Ответить: [ваш-адрес электронной почты]
В контактной форме [ваш-адрес электронной почты]
— это имя поля электронной почты. Таким образом, при использовании этого тега в качестве адреса для ответа любые ответы будут отправляться посетителю, что имеет больше смысла, чем отправка их в вашу учетную запись.
Теперь прокрутите вниз до конца и нажмите Сохранить .
К сожалению, вы не можете быть опытным техническим специалистом, поэтому исправление №1 может не сработать для вас, особенно если это не решит проблему полностью. К счастью, исправление №2 предоставляет вам вариант, который может сделать каждый, даже новичок.
Итак, если вы серьезно относитесь к тому, чтобы раз и навсегда решить проблемы с доставляемостью электронной почты, вот самый простой способ исправить то, что WordPress не отправляет электронную почту при использовании контактной формы 7.
2. Используйте контактную форму 7 с WP Mail SMTP
Далее мы собираемся установить плагин WP Mail SMTP на ваш сайт.
WP Mail SMTP — лучший плагин SMTP для WordPress. Вместо того, чтобы полагаться на ваш сервер веб-хостинга для отправки электронных писем, WP Mail SMTP отправляет их через отдельного провайдера электронной почты.
Таким образом вы будете уверены, что ваши электронные письма будут доставляться каждый раз. Они не будут отправлены в спам или отброшены почтовым сервером без уведомления.
Отправка через стороннюю службу добавляет к сообщениям важную проверку, так что это важный шаг, даже если вы уже изменили свой адрес отправителя.Существуют бесплатные и платные почтовые программы, поэтому вы легко найдете услугу, которая вам подходит.
Установить WP Mail SMTP
Для начала вам нужно загрузить zip-файл из своей учетной записи WP Mail SMTP. Вы найдете его на вкладке загрузок .
Затем откройте панель управления WordPress и загрузите плагин на свой сайт WordPress.
Если вам нужна помощь с этим, перейдите к этому руководству по установке плагина WordPress.
Не забудьте Активировать плагин.Как только вы активируете его, откроется Мастер установки.
Если вы хотите сделать здесь паузу, вы можете вернуться и перезапустить мастер, нажав кнопку Launch Setup Wizard в настройках WP Mail SMTP.
Затем мы настроим вашего провайдера электронной почты. Не забывайте, что элитная версия WP Mail SMTP поставляется с полной службой настройки White Glove. Так что, если вам неудобно делать это самостоятельно, вы можете приобрести Elite и попросить специалиста настроить его для вас.
Выберите провайдера электронной почты или SMTP-сервер
Теперь давайте запустим мастер настройки, чтобы создать соединение вашего сайта WordPress с провайдером электронной почты.
Это просто, даже если вы не технический пользователь.
Нажмите кнопку Приступим к работе , чтобы начать подключение вашего сайта WordPress к провайдеру электронной почты.
На первом этапе пора выбрать почтовую программу. WP Mail SMTP будет подключаться к API для отправки ваших писем, если вы не выберете Другой SMTP , который использует обычные настройки SMTP.
Не знаете, что здесь выбрать? У нас есть несколько советов, которые могут вам помочь:
- Для крупных сайтов SMTP.com или Sendinblue — надежные варианты. Любой из этих почтовых программ может обрабатывать большое количество электронных писем, созданных с вашего сайта.
- Вы также можете использовать один из других почтовых программ, например Outlook или Zoho Mail. Ознакомьтесь с полным руководством для поставщиков услуг электронной почты, чтобы узнать больше о плюсах и минусах.
- WP Mail SMTP поддерживает учетные записи Gmail или G-Suite. Это отличный выбор для небольших сайтов, которые не отправляют тонны электронных писем.
- Другой SMTP позволяет использовать любой SMTP-сервер, к которому у вас есть доступ.Некоторые провайдеры ограничивают количество писем, которые вы можете отправлять, но это еще один отличный вариант, если вы только начинаете. Обязательно используйте правильный порт SMTP, если выберете этот вариант.
Когда вы выбрали почтовую программу, откройте нашу документацию, чтобы выполнить шаги настройки на стороне провайдера:
Когда вы все настроите на своем веб-сайте службы электронной почты, вернитесь к этому руководству, чтобы включить ведение журнала электронной почты на своем сайте.
Включите ведение журнала электронной почты (необязательно)
В конце мастера WP Mail SMTP спросит, какие функции нужно включить.
По умолчанию 2 из них уже включены в настройках плагина:
- Доставляемость электронной почты : WP Mail SMTP будет перенаправлять все ваши сообщения через новую почтовую программу
- Отслеживание ошибок : WP Mail SMTP предупредит вас, если обнаружит проблемы с вашими записями DKIM, SPF или DMARC
Чтобы исправить ситуацию, когда контактная форма 7 не отправляет электронное письмо, вам нужно, чтобы оба были включены.
Если у вас есть WP Mail SMTP Pro, вы также можете включить подробные журналы электронной почты .
Подробные журналы электронной почты будет отслеживать отправленные вами электронные письма WordPress, чтобы вы могли легко видеть статус каждого из них. (Этот параметр не сохраняет содержимое электронного письма, но в плагине есть отдельная настройка, если вы хотите это сделать.)
Более того, версия Pro также включает полезный виджет панели инструментов для вашего сайта WordPress. Виджет показывает отправленные и неудачные электронные письма на диаграмме. Это позволяет быстро выявлять проблемы с электронной почтой.
Если ведение журнала включено, вы также можете просмотреть файл журнала на панели инструментов WordPress.
Наш экран журнала позволяет вам искать различные типы отправленных писем и уведомлений, чтобы вы могли быстро проверить статус.
Чтобы увидеть больше замечательных функций, ознакомьтесь с этой статьей о том, как регистрировать электронную почту WordPress.
И все! Теперь вы установили самый популярный плагин SMTP, чтобы исправить ошибку, при которой Contact Form 7 не отправляет электронные письма!
Загрузить WP Mail SMTP сейчас
Часто задаваемые вопросы об общих ошибках формы обратной связи 7
У вас есть еще вопросы по контактной форме 7, которая не отправляет электронное письмо? Ознакомьтесь с дополнительной информацией о сообщениях об ошибках и проблемах CF7 ниже.
Если вы хотите просмотреть все часто задаваемые вопросы, приступим.
Использует ли контактная форма 7 SMTP?
Нет, Contact Form 7 по умолчанию не использует SMTP. Вместо этого он отправляет электронные письма через ваш веб-сервер, что ненадежно и может привести к потере электронных писем из контактной формы. Вы можете установить плагин WP Mail SMTP, чтобы легко включить SMTP в контактной форме 7.
Работает ли контактная форма 7 на локальном хосте?
Вы можете установить плагин WP Mail SMTP для отправки писем с localhost.WP Mail SMTP будет перенаправлять электронные письма через SMTP-сервер или поставщика электронной почты, например Sendinblue, SMTP.com или Gmail.
Что означает цвет сообщения об ошибке контактной формы 7?
Контактная форма 7 содержит 3 типа ошибок с цветовой кодировкой:
- Желтый : это означает, что в вашей форме есть ошибка проверки. Например, может быть необязательное поле, которое не было заполнено.
- Оранжевый : отправленная вами форма была отмечена как спам. Это могло быть из-за проблемы с reCAPTCHA или Akismet.
- Красный : сбой почтового сервера. Это часто указывает на проблему с сервером хостинга, которая вызывает проблемы с функцией
wp_mail ()
. Попробуйте установить WP Mail SMTP, чтобы узнать, решит ли он проблему. Если это не так, обратитесь за помощью к своему хозяину.
Если сообщение отмечено зеленой рамкой, продолжайте читать.
Сообщение отмечено зеленой рамкой, поэтому почему контактная форма 7 не отправляет электронное письмо?
Обычно это означает, что ваше сообщение Контактной формы 7 было помечено как спам или отклонено на пути от вашего сайта к получателю.Итак, выглядит как , как будто ваша контактная форма WordPress не работает.
Это происходит, когда настройки конфигурации плагина верны, но исходящие электронные письма не проходят правильную аутентификацию. Эта проблема очень часто возникает при отправке писем из WordPress.
Чтобы исправить это, установите WP Mail SMTP, как мы показали вам в этом руководстве. WP Mail SMTP добавит правильные заголовки к вашим электронным письмам, чтобы они не отбрасывались другими серверами после их отправки.
Как исправить ошибку контактной формы 7 «При отправке сообщения произошла ошибка. Повторите попытку позже »
Если вы видите сообщение о том, что Contact Form 7 не смогла отправить ваше сообщение, обычно это вызвано защитой от спама Contact Form 7.
По умолчанию Contact Form 7 поддерживает только reCAPTCHA v3. Это самая строгая версия reCAPTCHA, и именно с ней пользователи сообщают о большинстве проблем.
Для большей гибкости мы рекомендуем перейти на WPForms Pro.Это позволяет вам использовать массу других методов, чтобы остановить спам в контактных формах, в том числе:
- reCAPTCHA v2 «Я не робот»
- reCAPTCHA v2 невидимый
- reCATPCHA v3
- hCaptcha
- Пользовательская CAPTCHA
- Списки разрешенных и запрещенных адресов электронной почты
Обновление до WPForms того стоит, потому что в нем так много дополнительных функций, которых нет в Contact Form 7. Также намного проще создать контактную форму Elementor с помощью WPForms по сравнению с контактной формой 7.
Как исправить ошибку «Адрес электронной почты отправителя не принадлежит домену сайта» Ошибка контактной формы 7
Ошибка «Адрес электронной почты отправителя не принадлежит домену сайта» означает, что домен в вашем электронном письме отправителя не совпадает с доменным именем вашего веб-сайта.
Иногда можно улучшить доставляемость электронной почты, используя электронную почту, которая соответствует домену, из которого отправлено сообщение. Но в электронных письмах по-прежнему не будет аутентификации с сервера, поэтому, вероятно, это не решит проблему полностью.
Лучше всего установить WP Mail SMTP, потому что это единственный способ добавить аутентификацию в ваши электронные письма WordPress.
Как исправить ошибку «Используется недопустимый синтаксис почтового ящика», ошибка контактной формы 7
Если вы видите сообщение «Используется недопустимый синтаксис почтового ящика», это означает, что вы допустили ошибку при вводе поля «От» (адрес отправителя) в настройках почты Контактной формы 7.
Чтобы исправить это, проверьте введенный вами адрес электронной почты на предмет опечаток и ошибок форматирования.
Как исправить «неправильная конфигурация приводит к сбою доставки почты или другим проблемам. Подтвердите свои контактные формы сейчас »
Ошибка «Неверная конфигурация приводит к сбою доставки почты или другим проблемам. Проверить свои контактные формы сейчас »означает, что у вас есть что-то в настройках контактной формы, что не позволяет Contact Form 7.
Иногда кажется, что это сообщение проверки появляется без причины. Это может произойти, если в контактную форму 7 добавлено новое правило проверки.
Вам нужно внимательно просмотреть вкладку Mail , чтобы исправить выделенные ошибки.
Если вы не можете определить источник проблемы, обычно проще переключиться на другой бесплатный плагин контактной формы.
Почему контактная форма 7 не отправляет электронную почту в тот же домен?
Если контактная форма 7 не отправляет электронную почту в тот же домен, на котором размещен ваш сайт, обычно проблема связана с одной из следующих двух проблем:
Настройки электронной почты хост-сервера
Убедитесь, что адрес электронной почты вашего домена правильно настроен в вашей учетной записи хостинга.
Обратитесь к своему хостинг-провайдеру и попросите его проверить настройки почтового сервера в вашей учетной записи.
DNS-записи домена
Для получения электронной почты вашему доменному имени необходимы действительные записи MX.
А для отправки электронных писем с аутентификацией также может потребоваться запись DMARC, 1 действительная запись SPF и запись DKIM.
Чтобы проверить записи DNS вашего домена для отправки электронной почты, вы можете отправить тестовое письмо из WP Mail SMTP на вкладке Тестовое письмо .
После отправки тестового электронного письма WP Mail SMTP сообщит о любых недостающих записях или неправильной конфигурации в вашем DNS.
Почему контактная форма 7 не отправляет электронную почту в Gmail?
Если ваша учетная запись Gmail не получает сообщения электронной почты из контактной формы 7, вероятно, это связано с тем, что в этих сообщениях нет аутентификации. Обычно это происходит, когда WordPress не отправляет электронную почту надежно.
И если вы получаете электронные письма на Gmail, они могут увидеть в них предупреждение, например «будьте осторожны с этим сообщением».
Вы можете исправить, что Contact Form 7 не отправляет электронную почту в Gmail, установив WP Mail SMTP. Это добавит правильную проверку к электронным письмам, чтобы они были доставлены в Gmal.
При желании вы также можете отправлять электронные письма через свою учетную запись Gmail с помощью WP Mail SMTP.
Почему моя контактная форма застряла на прялке?
Иногда отправляется контактная форма 7, но вы продолжаете видеть вращающееся колесо — форма не работает. Если вы используете Flamingo, вы также можете обнаружить, что сообщение не сохранено.
Иногда это происходит, когда появляется новая версия Контактной формы 7. Это может вызвать серьезные проблемы с существующими формами.
Пользователям
Contact Form 7 обычно предлагается отключить все остальные плагины и переключиться на тему по умолчанию. Это может помочь вам определить конфликт , но не поможет вам решить проблему.
Итак, есть еще 2 вещи, которые стоит попробовать.
Восстановить постоянные ссылки в WordPress
На панели управления WordPress перейдите в «Настройки » Постоянные ссылки .
Измените структуру постоянных ссылок и нажмите «Сохранить». Затем верните его к предыдущему значению и снова нажмите «Сохранить».
Это безопасно перестроит ваш файл .htacess
, что иногда устраняет проблемы с вращением контактной формы 7 и отсутствием отправки электронной почты.
Перейти на WPForms Lite
Для повышения функциональности поддержки и вы можете импортировать формы Contact Form 7 в WPForms Lite, который на 100% бесплатен навсегда.
WPForms также намного проще в использовании, потому что это 100% перетаскивание. Таким образом, вам не нужно писать код для создания формы.
Поддержка в WPForms тоже отличная. Даже если вы выберете бесплатную версию, вы сможете получить помощь от команды экспертов на WordPress.org. Вы всегда получите ответ на свой вопрос в течение 1–3 рабочих дней.
Посмотрите это сравнение WPForms Lite и Contact Form 7, чтобы узнать о дополнительных функциях, которые вы получите при переключении!
Исправьте электронную почту WordPress прямо сейчас
Затем используйте псевдоним Gmail с контактной формой 7
Теперь, когда вы установили контактную форму 7, вы можете использовать разные псевдонимы Gmail или G-Suite для отправки электронных писем из разных контактных форм WordPress.Это отличный способ иметь разные формы для отправки электронной почты от разных команд или отделов.
Ознакомьтесь с этим руководством по использованию псевдонимов Gmail в WordPress, чтобы узнать, как настроить эту мощную функцию.
Готовы исправить электронную почту? Начните сегодня с лучшего плагина WordPress SMTP. WP Mail SMTP Elite включает в себя полную настройку White Glove Setup и предлагает 14-дневную гарантию возврата денег.
Если эта статья вам помогла, подпишитесь на нас в Facebook и Twitter, чтобы получить больше советов и руководств по WordPress.
Создайте контактную форму с помощью React и PHP | Малит Прияшан
Совет : создавайте быстрее с компонентами React, разделяя их с Bit . Ваша команда может легко обмениваться компонентами, синхронизировать изменения и использовать их где угодно. Попробуйте сами.
На вашем компьютере должно быть установлено приложение create-react-app. Если у вас нет приложения create-react-app, вы можете установить его через npm. Запустите это в своей консоли.
npm install create-react-app
Давайте перейдем в папку вашего проекта в консоли.Мой:
cd ~ / response-contact-form
Чтобы создать приложение React в папке, выполните следующую команду:
create-response-app.
Это займет пару секунд или минут. Как только это будет сделано, откройте проект с помощью вашей любимой IDE или редактора кода. Мой — VSCode. Затем откройте файл App.js в папке ./src/App.js. Вы увидите что-то вроде этого:
Давайте немного приберемся. Удалите все внутри div с помощью класса App. Теперь ваш метод рендеринга должен выглядеть так.
Просто пустой div.
Давайте создадим базовую форму с двумя текстовыми полями для первого и второго имени, одним вводом электронной почты для электронной почты пользователя, одним текстовым полем для сообщения и, конечно же, кнопкой отправки.
Теперь ваш метод рендеринга будет выглядеть так:
Добавление базового стиля к вашей форме
Приложение Create React уже импортировало файл CSS по умолчанию. Вы можете увидеть файл App.css в папке ./src. Откройте его и удалите все внутри файла.Добавьте этот код CSS в файл. Я не буду объяснять, что делает весь CSS. Но это довольно просто, просто добавляем немного ширины и выравниваем.
Хорошо. Я не хочу вас слишком запутывать. Мы немного поработали, но пока не увидели никаких результатов. Так что давайте все сохраним и вернемся к терминалу. В корневой папке проекта запустите:
npm start
Это откроет браузер с портом localhost: 3000. Теперь вы сможете увидеть нашу симпатичную маленькую форму такой.
Хорошо, отлично.Пришло время заняться реальным React.
Теперь у нас есть базовая статическая форма React. Но пока ничего не делает. Нам понадобится начальное состояние и функция-обработчик отправки.
Состояние формы
Теперь мы добавим состояние для нашей формы. Мы должны создать для этого конструктор:
Затем нам понадобится наш метод обработчика отправки формы, например:
На данный момент мы можем зарегистрировать состояние, чтобы увидеть, все ли значения сохранены в состоянии.
Наконец, давайте привяжем обработчик формы.
Теперь мы должны установить наши начальные состояния как входные значения формы, и всякий раз, когда мы изменяем наш вход, мы будем устанавливать наше состояние на текущее входное значение.
На этом этапе мы меняем нашу форму следующим образом:
Если вы попытаетесь написать что-то в форме и попытаетесь отправить это сейчас, вы увидите свои данные в консоли. Откройте консоль и проверьте, работает ли она. Вывод консоли должен выглядеть так.
Отправить письмо с PHP
Well. Мы почти закончили с фронтенд-частью.Теперь нам нужен серверный язык для отправки писем на наш почтовый ящик. На этот раз я выбираю php. Прежде чем мы начнем писать внутреннюю часть, давайте добавим еще два свойства к нашему состоянию. Нам нужно добавить {error and mailSent}.
Состояние готово. Начнем с php. Если вы создали свое приложение для реагирования уже в папке Apache или Nginx www, вы можете перейти в корень своего проекта и создать папку с именем api / contact внутри папки контактов.
Создайте файл index.php. Здесь будет работать наша электронная почта.Я хочу упомянуть, что мы не собираемся использовать подход ООП. Но если вам нужен более чистый PHP-код, вы можете немного его очистить и улучшить.
Из приложения React мы отправляем почтовый запрос на php api. В нашей контактной форме необходимо указать имя и адрес электронной почты. Потому что в php мы будем проверять эти два значения. Если эти два значения пусты, мы выдадим ошибку. Так что имейте это в виду.
Давайте добавим этот код в ваш файл index.php.
В основном то, что мы делаем: мы проверяем имя и адрес электронной почты.Затем, используя функцию php mail (), мы отправляем электронное письмо на нашу учетную запись электронной почты с данными контактной формы.
Теперь, если вы перейдете в папку api http: // localhost / response-contact-form / api / contact
… вы ничего не увидите. Поскольку наш api умирает, если мы не отправляем также имя и адрес электронной почты — он ищет почтовый запрос.
Наш API готов, и теперь пора завершить нашу форму. Итак, нам нужно отправить наши данные, которые были сохранены в состоянии. Для этого мы можем использовать выборку Javascript.Но недавно я использовал другой пакет npm, который очень хорошо работает с React для HTTP-запросов. Может быть, вы уже знаете о нем Axios. Итак, нам нужно сначала установить этот пакет. Перейдите в папку вашего приложения React в консоли.
И выполнить:
npm install axios
Отлично. Теперь вернитесь в App.js и в верхней части файла вам нужно импортировать Axios.
импортировать axios из 'axios';
После импорта Axios мы должны создать константу для нашего пути api. Создайте константу перед классом App.
Затем давайте воспользуемся Axios внутри метода handleFormSubmit для отправки наших данных на серверную часть.
Теперь у нас появилась возможность отправлять электронные письма через нашу контактную форму. Наконец, давайте покажем сообщение пользователю после того, как он отправил электронное письмо.
Добавьте это перед закрывающим тегом формы
.
Теперь наш пользователь может видеть сообщение после отправки электронного письма. Все сделано! У вас есть симпатичная контактная форма с React и php.
Документацию и репозиторий github вы можете найти здесь:
Посмотрите видео, чтобы понять использование репозитория GitHub:
Загрузите код с github:
Спасибо за внимание! Я надеюсь, что эта статья дает представление о том, насколько просто использовать React и php для создания простой контактной формы.Я рекомендую вам изменить или попытаться улучшить часть React. Может быть, даже добавить загрузчик и поэкспериментировать со стилем.
Если у вас есть вопросы или замечания, оставьте комментарий ниже.
Еще раз спасибо за чтение! бросьте 👏 (или два), это сделало бы меня очень счастливым и, пожалуйста, не стесняйтесь комментировать ниже!
Попробуйте react-cc-tagger. Компонент тегирования для реакции.
Не получено письмо, отправленное через контактную форму PHP.
@ Азатот:
@craven:Не уверены, что вы имеете в виду под «доменом отправителя не имеет записи MX» — это MX не для входящей почты? Что мне нужно установить, чтобы исправить эту ошибку?
Это означает, что получатель электронной почты, отправленной с вашего сервера, ответил 421 Refused, заявив, что адрес отправителя ([электронная почта защищена]) не имеет MX.MX предназначен для входящей почты, да, но фильтрация спама (получатель) может и в этом случае, вероятно, проверяет наличие MX для доменов отправителя, что в данном случае было недопустимым, потому что это не fqdn.
> Проблема, с которой я столкнулся, заключается в том, что электронное письмо, которое я отправляю из этой контактной формы, даже не отображается в моем журнале mail.log ??
Проверьте журналы ошибок PHP, возможно, PHP не имел разрешения на вызов утилиты sendmail Postfix.
Edit: но, видя, что отправитель электронных писем в представленном вами журнале [электронная почта защищена], похоже, что PHP действительно отправляет почту.
А, понятно. Что ж, теперь у него есть fqdn, так что это должно быть решено.
Да, php отправляет почту, и я не вижу в моем журнале php ничего, что указывало бы на ошибку. Вот копия моих последних нескольких строк сразу после того, как я попытаюсь отправить контактную форму
[31 мая 2012 г. 07:03:43] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '6426' AND comment_approved = '1' И wp_posts.post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:03:55] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '9325' AND comment_approved = '1' AND wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:04:26] Ошибка базы данных WordPress Неизвестный столбец 'wp_posts.post_type 'in' where clause 'для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID =' 385 'И comment_approved =' 1 'И wp_posts.post_type NOT IN (' shop_order ') ORDER BY comment_date_gmt DESC LIMIT 15 сделано require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:05:13] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '13679' AND comment_approved = '1' AND wp_posts.post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:15:17] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '7337' AND comment_approved = '1' AND wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:17:13] Ошибка базы данных WordPress Неизвестный столбец 'wp_posts.post_type 'in' where clause 'для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID =' 12385 'AND comment_approved =' 1 'И wp_posts.post_type NOT IN (' shop_order ') ORDER BY comment_date_gmt DESC LIMIT 15 made by require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:23:57] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '13461' AND comment_approved = '1' И wp_posts.post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:24:28] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '8708' AND comment_approved = '1' И wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:27:48] Ошибка базы данных WordPress Неизвестный столбец 'wp_posts.post_type 'in' where clause 'для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID =' 8419 'И comment_approved =' 1 'И wp_posts.post_type NOT IN (' shop_order ') ORDER BY comment_date_gmt DESC LIMIT 15 made by require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:30:44] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '9810' AND comment_approved = '1' AND wp_posts.post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:34:35] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '12351' AND comment_approved = '1' AND wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:38:26] Ошибка базы данных WordPress Неизвестный столбец 'wp_posts.post_type 'in' where clause 'для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID =' 11755 'AND comment_approved =' 1 'И wp_posts.post_type NOT IN (' shop_order ') ORDER BY comment_date_gmt DESC LIMIT 15 сделано require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:40:21] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '11045' AND comment_approved = '1' AND wp_posts.post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:41:19] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '3619' AND comment_approved = '1' AND wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31 мая 2012 г. 07:45:07] Уведомление PHP: ошибка XML: EntityRef: ожидание ';' в строке 1297, столбце 93 в / var / www /ablemagazine.co.uk/wp-content/plugins/autoblogged/simplepie.php в строке 778
[31-мая-2012 07:46:11] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '1385' AND comment_approved = '1' AND wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:49:04] Ошибка базы данных WordPress Неизвестный столбец 'wp_posts.post_type 'in' where clause 'для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID =' 3453 'И comment_approved =' 1 'И wp_posts.post_type NOT IN (' shop_order ') ORDER BY comment_date_gmt DESC LIMIT 15 made by require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:50:59] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '12805' AND comment_approved = '1' AND wp_posts.post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:51:57] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '4090' AND comment_approved = '1' AND wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:52:54] Ошибка базы данных WordPress Неизвестный столбец 'wp_posts.post_type 'in' where clause 'для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID =' 12375 'И comment_approved =' 1 'И wp_posts.post_type NOT IN (' shop_order ') ORDER BY comment_date_gmt DESC LIMIT 15 made by require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 07:54:31] Ошибка базы данных WordPress. Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '12633' AND comment_approved = '1' AND wp_posts.post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
[31-мая-2012 08:06:06] Ошибка базы данных WordPress Неизвестный столбец 'wp_posts.post_type' в 'where clause' для запроса SELECT wp_comments. * FROM wp_comments WHERE comment_post_ID = '6936' AND comment_approved = '1' AND wp_posts. post_type NOT IN ('shop_order') ORDER BY comment_date_gmt DESC LIMIT 15 сделано с помощью require, wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
Как видите, похоже, что некоторые ошибки сгенерированы другими сайтами wordpress на моем сервере.
Контактная форма 7 Электронное письмо не отправляется? Вот как это исправить
«При отправке сообщения произошла ошибка. Пожалуйста, повторите попытку позже.»
Часто вы сталкиваетесь с этим уведомлением после нажатия Отправить форму через контактную форму 7. Итак, почему это происходит и как это исправить? Следуйте этому пошаговому руководству, чтобы найти наиболее подходящее решение.
Почему ваша контактная форма 7 не отправляет электронные письма?
Электронные письма на пути к своим почтовым ящикам часто предотвращаются спам-фильтрами.Широко используемые провайдеры электронной почты, такие как Gmail, Outlook, Yahoo !, и многие другие, часто содержат настроенную функцию, которая блокирует потенциально опасные электронные письма. В результате ваша контактная форма не может доставлять электронные письма. Независимо от того, сколько раз вы пытались, электронные письма были отклонены.
Проблема, связанная с тем, что контактная форма 7 не отправляет электронные письма, не связана с самим плагином. Это скорее происходит из-за неправильных настроек почты или конфигурации SMTP.
Другая проблема, которая часто случается с веб-сайтами, использующими общий хостинг, может быть на самих серверах хостинга.
Ниже приведены рекомендуемые шаги, которые помогут устранить проблему с доставкой электронной почты.
Лучшие практики при использовании контактной формы 7
Правильно настроить плагин формы
На вкладке формы
Убедитесь, что ваши текстовые поля выглядят чистыми и заканчиваются обычным образом.
Контактная форма 7 имеет несколько типов тегов формы. Он автоматически добавляет синтаксис к каждому выбранному вами тегу формы. Дважды проверьте, правильно ли они написаны и что их компоненты упорядочены: тип, имя, параметры и значения.
Не показывайтесь как спам
Во вкладке Почта
Если вы введете личный адрес электронной почты в поле From , вы, вероятно, столкнетесь с этой ошибкой. Проблема отображается как «Адрес электронной почты отправителя не принадлежит домену сайта».
Даже если вы не используете контактную форму 7, рекомендуется подготовить настоящий [email protected] {your-domain} адрес электронной почты на вашем хосте.
По умолчанию WordPress использует адрес электронной почты [email protected] {your-domain} в своих письмах с уведомлениями, включая уведомления по электронной почте WooCommerce, уведомления о комментариях и уведомления о новых пользователях.Если этот адрес электронной почты существует на вашем хосте, он будет , а не , вероятно, будет заблокирован при отправке и отправке.
Убедитесь, что у вас есть адрес электронной почты [email protected] {your-domain} , и введите его в поле From . Затем вы можете увидеть ошибку: адрес электронной почты отправителя не принадлежит домену сайта. удаленный.
Контактная форма 7 показывает отправленное сообщение, но не получает электронное письмо
Итак, возникает другая ситуация. Вы отправляете сообщение и видите, что оно было отправлено, однако вы проверяете свой почтовый ящик и не можете его найти.
Когда это происходит, вам нужно выяснить, где именно возникает проблема — в конфигурации вашего веб-сайта или в почтовом клиенте получателя?
Чтобы выяснить основную причину этой проблемы, вы можете попробовать добавить несколько получателей и / или адрес электронной почты «Копия и скрытая копия».
Если ни одно из этих писем не получает сообщения, проблема, скорее всего, связана с функцией исходящей почты WordPress. Это можно устранить с помощью плагина WordPress SMTP.
Отправлять электронные письма через SMTP вместо функции PHP в WordPress
С помощью плагина SMTP вы можете легко интегрировать свой сайт WordPress с предпочитаемой почтовой программой.
Поставщики услуг
SMTP позволяют вам массово рассылать рекламные электронные письма, автоматические транзакционные электронные письма и другие виды дополнительных уведомлений. Эти SMTP-серверы имеют разный ценовой диапазон, лимит отправки, простоту использования и расширяемые расширенные функции.
YaySMTP — безусловно, самый простой в настройке плагин. Он работает так же хорошо, как и другие популярные SMTP-плагины WordPress. Что еще лучше, YaySMTP не ограничивает премиум-функции в своей бесплатной версии.Я знаю, это ВАУ! Верно?
После активации вы увидите новое меню на панели инструментов WordPress. На этом YaySMTP вы выполняете все настройки и конфигурацию, не покидая и не перезагружая страницу.
Итак, как вы можете ясно видеть, вам нужно сделать 3 шага, чтобы исправить проблему с контактной формой WordPress или автоматическими сообщениями, которые не отправляются.
Шаг 1 — Заполните От электронной почты и От имени
Адрес электронной почты From будет адресом электронной почты администратора вашего сайта.А From name — это название вашего веб-сайта, вашего магазина или бренда.
Шаг 2 — Выберите предпочитаемую почтовую программу
Вы можете выбрать SMTP-сервер, который вам больше всего нравится. Если вы не использовали ни один из них раньше, вы можете прочитать Сравнение лучших SMTP-сервисов, в котором мы подбираем для вас лучшие варианты.
Шаг 3 — Конфигурация для каждого поставщика услуг SMTP
В зависимости от выбранной службы время от времени конфигурация меняется.Обязательно ознакомьтесь с этой документацией YaySMTP, чтобы выяснить, что наиболее удобно для вашего бюджета и видения.
Встроить шаблон контактной формы третьей стороны
Если вы хотите избавить себя от всей борьбы с самоконфигурацией и устранением неполадок, выбор встраиваемой хорошо продуманной формы — неплохая идея. Существует множество конструкторов форм, которые помогут вам разместить контактную форму на странице контактов WordPress.
JotForm
Jotform позволяет визуально создавать формы на веб-сайте JotForm, а затем публиковать и встраивать их на свой сайт WordPress.
Эта служба форм предоставляет различные готовые шаблоны, в которые вы можете добавить дополнительные элементы формы и продолжить их настройку. Или вы можете построить совершенно новый. Когда закончите, вы можете легко скопировать шорткод и вставить его на свою страницу контактов.
Каждый раз, когда форма отправляется через ваш веб-сайт, вы сразу получаете уведомление по электронной почте — точно так же, как вы его получили с помощью контактной формы 7 и SMTP-сервера. С этой опцией вам не нужно устанавливать и активировать плагин WordPress SMTP.
Только то, что он может выглядеть несколько аккуратно и хорошо продуманным, чем образец уведомления по умолчанию из почтовой функции WordPress.
Подвести итоги
Некоторые поставщики виртуального хостинга WordPress часто ограничивают исходящую электронную почту, блокируя определенные порты. Даже когда они этого не делают, их почтовые серверы считаются ненадежными. Вот почему SMTP — идеальное решение, когда вы обнаруживаете, что ваше электронное письмо с контактной формой 7 не отправляется или видите заметную задержку доставки электронной почты.
Мы надеемся, что эта статья помогла вам увидеть все действия, которые вы можете предпринять для решения этой проблемы.
Вы также можете ознакомиться с нашим руководством по настройке электронного письма с подтверждением заказа WooCommerce.
Создание простой контактной формы на PHP — часть 5
В части 4 статьи «Создание простой контактной формы на PHP» мы добавили поле CAPCHA, чтобы уменьшить количество спама.
В этой части мы собираемся изменить отправку почты для использования SMTP с помощью Swift Mailer, почтовой библиотеки php.
Когда мы оставили это, наша контактная форма выглядела так.
Php
require_once (__ DIR__. '/recaptcha-php-1.11/recaptchalib.php');
$ действительный = истина;
$ errors = array ();
$ captchaerror = ноль;
$ config = include (__ DIR__. '/config.php');
$ contact = массив (
'name' => null,
'email' => null,
'сообщение' => ноль
);
if (isset ($ _ POST ['recaptcha_challenge_field'], $ _ POST ['recaptcha_response_field'])) {
$ resp = recaptcha_check_answer (
$ config ['recaptcha'] ['privatekey'],
$ _SERVER ["REMOTE_ADDR"],
$ _POST ["recaptcha_challenge_field"],
$ _POST ["recaptcha_response_field"]
);
if (! $ resp-> is_valid) {
$ captchaerror = $ resp-> error;
$ действительный = ложный;
$ errors ['captcha'] = "Введенный текст не соответствует.";
}
$ contact = filter_input_array (INPUT_POST, массив (
'name' => FILTER_SANITIZE_STRING,
'email' => FILTER_SANITIZE_STRING,
'message' => FILTER_SANITIZE_STRING,
), правда);
if (пусто ($ contact ['name'])) {
$ действительный = ложный;
$ errors ['name'] = "Вы должны ввести свое имя.";
}
if (пусто ($ contact ['email'])) {
$ действительный = ложный;
$ errors ['email'] = "Вы должны ввести свой адрес электронной почты.";
} elseif (! filter_input (INPUT_POST, 'электронная почта', FILTER_VALIDATE_EMAIL)) {
$ действительный = ложный;
$ errors ['email'] = "Вы должны ввести действующий адрес электронной почты.";
}
if (пусто ($ contact ['message'])) {
$ действительный = ложный;
$ errors ['message'] = "Вы должны ввести сообщение.";
}
if ($ valid) {
$ to = "[email protected]";
$ subject = "Отправка контактной формы";
$ headers = "От: [email protected] \ r \ n"
. "Ответить на: " . $ contact ['электронная почта']. "\ r \ n"
. «X-Mailer: PHP /». phpversion ();
$ mailbody = "Контактная форма заполнена. \ n \ n"
."Имя: " . $ contact ['имя']. "\ п"
. "Электронное письмо: " . $ contact ['электронная почта']. "\ п"
. «Сообщение: \ n». $ contact ['сообщение'];
почта ($ to, $ subject, $ mailbody, $ headers);
заголовок ("расположение: спасибо.html");
выход;
}
}
?>
Свяжитесь с нами
Добавьте учетные данные SMTP в файл конфигурации
"mail" => массив (
"type" => "smtp",
"server" => "smtp.gmail.com",
"порт" => 587,
"auth" => правда,
"username" => "[email protected]",
"пароль" => "yourgmailpassword"
)
Я использую в качестве примера учетную запись Gmail. Измените сервер, порт, имя пользователя и пароль на любые настройки вашей учетной записи электронной почты.
Добавление библиотеки Swiftmailer
Перейдите на страницу выпусков репозитория github для проекта и загрузите последнюю версию (5.2.1 на момент написания этой статьи).
Распакуйте архив в папку вашего проекта. После этого у меня есть папка с именем swiftmailer-5.2.1
в папке моего проекта, которая содержит папку lib
с библиотеками в ней.
Теперь включите библиотеку вверху страницы contact.php
.
require_once (__ DIR__.'/swiftmailer-5.2.1/lib/swift_required.php');
Замените строку, вызывающую функцию mail
следующей.
Вы также можете удалить переменную $ headers , поскольку она больше не нужна.
$ mail = Swift_Message :: newInstance ();
$ mail-> setSubject ($ тема);
$ mail-> setFrom (массив ($ from));
$ mail-> setTo (массив ($ to));
$ mail-> setReplyTo (array ($ contact ['email'] => $ contact ['name']));
$ mail-> setBody ($ mailbody);
if ($ config ['mail'] ['type'] == 'smtp') {
$ transport = Swift_SmtpTransport :: newInstance ($ config ['mail'] ['server'], $ config ['mail'] ['port']);
if ($ config ['mail'] ['auth']) {
$ transport-> setUsername ($ config ['mail'] ['имя пользователя']);
$ transport-> setPassword ($ config ['mail'] ['пароль']);
}
} еще {
$ transport = Swift_MailTransport :: newInstance ();
}
$ mailer = Swift_Mailer :: newInstance ($ транспорт);
$ result = $ mailer-> отправить ($ mail);
Давайте немного разберемся с этим.
$ mail = Swift_Message :: newInstance ();
$ mail-> setSubject ($ тема);
$ mail-> setFrom (массив ($ from));
$ mail-> setTo (массив ($ to));
$ mail-> setReplyTo (array ($ contact ['email'] => $ contact ['name']));
$ mail-> setBody ($ mailbody);
Этот код создает само письмо как экземпляр Swift_Message
.
Он устанавливает тему, адрес, откуда и ответ, а также тело письма.
Это должно быть довольно легко очевидно, просто прочитав имена методов.
if ($ config ['mail'] ['type'] == 'smtp') {
$ transport = Swift_SmtpTransport :: newInstance ($ config ['mail'] ['server'], $ config ['mail'] ['port']);
if ($ config ['mail'] ['auth']) {
$ transport-> setUsername ($ config ['mail'] ['имя пользователя']);
$ transport-> setPassword ($ config ['mail'] ['пароль']);
}
} еще {
$ transport = Swift_MailTransport :: newInstance ();
}
Мы проверяем, установили ли мы тип почтового транспорта на smtp в нашем файле конфигурации.Если у нас есть, мы создаем экземпляр Swift SmtpTransport, передавая учетные данные и информацию о сервере, которые есть в нашем файле конфигурации.
В противном случае мы создаем экземпляр Swift MailTransport, который является оболочкой для функции php mail, которую мы использовали ранее.
$ mailer = Swift_Mailer :: newInstance ($ транспорт);
$ result = $ mailer-> отправить ($ mail);
Swift_Mailer
фактически отправляет сообщение Swift_Message
, которое мы создали с помощью транспорта.
Наша полная страница contact.php
теперь должна выглядеть следующим образом:
Php
require_once (__ DIR__. '/recaptcha-php-1.11/recaptchalib.php');
require_once (__ DIR__. '/swiftmailer-5.2.1/lib/swift_required.php');
$ действительный = истина;
$ errors = array ();
$ captchaerror = ноль;
$ config = include (__ DIR__. '/config.php');
$ contact = массив (
'name' => null,
'email' => null,
'сообщение' => ноль
);
if (isset ($ _ POST ['recaptcha_challenge_field'], $ _ POST ['recaptcha_response_field'])) {
$ resp = recaptcha_check_answer (
$ config ['recaptcha'] ['privatekey'],
$ _SERVER ["REMOTE_ADDR"],
$ _POST ["recaptcha_challenge_field"],
$ _POST ["recaptcha_response_field"]
);
if (! $ resp-> is_valid) {
$ captchaerror = $ resp-> error;
$ действительный = ложный;
$ errors ['captcha'] = "Введенный текст не соответствует.";
}
$ contact = filter_input_array (INPUT_POST, массив (
'name' => FILTER_SANITIZE_STRING,
'email' => FILTER_SANITIZE_STRING,
'message' => FILTER_SANITIZE_STRING,
), правда);
if (пусто ($ contact ['name'])) {
$ действительный = ложный;
$ errors ['name'] = "Вы должны ввести свое имя.";
}
if (пусто ($ contact ['email'])) {
$ действительный = ложный;
$ errors ['email'] = "Вы должны ввести свой адрес электронной почты.";
} elseif (! filter_input (INPUT_POST, 'электронная почта', FILTER_VALIDATE_EMAIL)) {
$ действительный = ложный;
$ errors ['email'] = "Вы должны ввести действующий адрес электронной почты.";
}
if (пусто ($ contact ['message'])) {
$ действительный = ложный;
$ errors ['message'] = "Вы должны ввести сообщение.";
}
if ($ valid) {
$ to = $ config ['контакт'] ['в'];
$ from = $ config ['контакт'] ['из'];
$ subject = "Отправка контактной формы";
$ mailbody = "Контактная форма заполнена. \ n \ n"
. "Имя: " . $ contact ['имя']. "\ п"
. "Электронное письмо: " . $ contact ['электронная почта']. "\ п"
.«Сообщение: \ n». $ contact ['сообщение'];
$ mail = Swift_Message :: newInstance ();
$ mail-> setSubject ($ тема);
$ mail-> setFrom (массив ($ from));
$ mail-> setTo (массив ($ to));
$ mail-> setReplyTo (array ($ contact ['email'] => $ contact ['name']));
$ mail-> setBody ($ mailbody);
if ($ config ['mail'] ['type'] == 'smtp') {
$ transport = Swift_SmtpTransport :: newInstance ($ config ['mail'] ['server'], $ config ['mail'] ['port']);
if ($ config ['mail'] ['auth']) {
$ transport-> setUsername ($ config ['mail'] ['имя пользователя']);
$ transport-> setPassword ($ config ['mail'] ['пароль']);
}
} еще {
$ transport = Swift_MailTransport :: newInstance ();
}
$ mailer = Swift_Mailer :: newInstance ($ транспорт);
$ result = $ mailer-> отправить ($ mail);
заголовок ("расположение: спасибо.html ");
выход;
}
}
?>
Свяжитесь с нами
Другие особенности Swiftmailer
Swiftmailer имеет гораздо больше функциональных возможностей, чем мы используем для нашего приложения.
Он может отправлять html и / или составные электронные письма.
Он может отправлять вложения и встроенные / встроенные изображения.
У него больше транспортов, чем просто smtp
и mail
.
Я предлагаю взглянуть на документацию, чтобы узнать больше о его возможностях.
Использование транзакционной электронной почты
Теперь, когда мы используем почтовую библиотеку, поддерживающую SMTP, мы можем использовать сервис транзакционной электронной почты, такой как Mandrill или Mailgun, для обработки отправки электронной почты.
Использование службы транзакционной электронной почты дает ряд преимуществ по сравнению с использованием обычной учетной записи электронной почты через SMTP или самого сервера с функцией mail
.
Эти сервисы созданы для предприятий и могут обрабатывать большие объемы электронной почты и имеют очень высокое время безотказной работы.Ваша учетная запись электронной почты в вашей учетной записи общего хостинга cPanel — нет.
Даже более мощные решения, такие как Exchange или Google Apps для бизнеса, больше предназначены для людей, чем веб-приложения.
Обычно они очень доступны по цене.
Mandrill бесплатно рассылает вам 12 000 писем в месяц, а Mailgun — 10 000. Amazon SES взимает 0,10 доллара США за тысячу электронных писем.
Это означает, что если вы не отправляете десятки тысяч электронных писем в месяц, вам не придется ничего платить, и даже если вы это сделаете, это будет всего пара долларов в месяц.
Службы транзакций
обычно предоставляют отличные отчеты, включая такие вещи, как показатели отказов, процент открытий и даже журналы каждого электронного письма, отправленного через службу.
Одного этого достаточно, чтобы его стоило использовать даже для небольших сайтов, которые не рассылают много.
Настройка службы транзакционной электронной почты
Я собираюсь использовать в качестве примера Mandrill, но вы можете использовать любую услугу, какую захотите.
Очевидно, что первым делом нужно подписаться на услугу.
Следующим шагом является получение учетных данных SMTP для учетной записи.Для Mandrill вы можете найти это в разделе Настройки
.
Для Mandrill они будут выглядеть примерно так.
Хост | smtp.mandrillapp.com |
Порт | 587 |
Имя пользователя SMTP | адрес электронной почты |
Пароль SMTP | любой действующий ключ API |
Вы можете сгенерировать ключ API внизу той же страницы.
Затем отредактируйте раздел почты на странице config.php
, как показано ниже.
"mail" => массив (
"type" => "smtp",
"server" => "smtp.mandrillapp.com",
"порт" => 587,
"auth" => правда,
"username" => "youremailaddress",
"пароль" => "yourapikey"
)
Это все, что вам нужно сделать. Никаких изменений кода не требуется.
Создайте контактную форму с помощью React и PHP | #React и руководства по PHP | CraftCode
Создайте контактную форму с помощью React и используйте на своем веб-сайте PHP или WordPress!
Существует множество способов создания контактных форм, использование HTML и jQuery или HTML и Javascript для выбора более современных фреймворков, таких как React.
Сегодня мы попробуем сделать что-нибудь немного по-другому, по-современному.
К концу этого поста у вас будет полностью рабочий контакт, который вы сможете интегрировать в WordPress или свой php-сайт. Я также опубликовал финальный проект на github, так что вы можете скачать его и поэкспериментировать.
Предварительные требования? не совсем
Для этого урока вам не обязательно быть экспертом в Javascript, React или PHP. Базовых знаний достаточно, чтобы разобраться в этом руководстве. Я также не буду вдаваться в основные детали, такие как установка React и написание кода CSS.
Мы будем создавать только внешнюю часть, но я покажу вам, как создавать и внутреннюю часть. Для внутренней части вам понадобится веб-сервер, такой как Apache или Nginx. Только базовая отправка электронной почты будет выполняться с помощью php.
Для пользователей Mac самый быстрый способ настроить сервер — это загрузить и установить Mamp. Я уже установил Mamp с Nginx. Для этого вам не нужна никакая база данных, потому что мы просто отправляем электронные письма на ваш почтовый ящик, не сохраняя их в базе данных.
Хорошо, давай начнем вечеринку!
Создание приложения React
На вашем компьютере должно быть установлено приложение create-react-app.Если у вас нет приложения create-react-app, вы можете установить его через npm. Запустите это в своей консоли.
npm установить приложение create-react-app
Давайте перейдем к папке вашего проекта в консоли. Мой:
Чтобы создать приложение React в папке, выполните эту команду:
Это займет пару секунд или минут. Как только это будет сделано, откройте проект с помощью вашей любимой IDE или редактора кода. Мой — VSCode. Затем откройте файл App.js в папке ./src/App.js. Вы увидите что-то вроде этого:
Создание контактной формы
Давайте немного приберемся.Удалите все внутри div с помощью класса App. Теперь ваш метод рендеринга должен выглядеть так.
render () {
возвращаться(
);
}
Просто пустой div.
Давайте создадим базовую форму с двумя текстовыми полями для первого и второго имени, одним вводом для электронной почты пользователя, одним текстовым полем для сообщения и, конечно же, кнопкой отправки.
Свяжитесь со мной
Теперь ваш метод рендеринга будет выглядеть так:
render () {
возвращаться (
Свяжитесь со мной
);
}
Добавление базового стиля к вашей форме
Приложение Create React по умолчанию уже импортировало файл CSS.Вы можете увидеть файл App.css в папке ./src. Откройте его и удалите все внутри файла. Добавьте этот код CSS в файл. Я не буду объяснять, что делает весь CSS. Но это довольно просто, просто добавляем немного ширины и выравниваем.
* {
размер коробки: рамка-рамка;
}
.Приложение {
максимальная ширина: 420 пикселей;
маржа: 0 авто;
}
п {
выравнивание текста: центр;
font-weight: 500;
}
input [type = text], input [type = email], select, textarea {
ширина: 100%;
отступ: 12 пикселей;
граница: 1px solid #ccc;
радиус границы: 4 пикселя;
размер коробки: рамка-рамка;
маржа сверху: 6 пикселей;
нижнее поле: 16 пикселей;
изменить размер: по вертикали;
}
input [type = submit] {
цвет фона: # 4CAF50;
цвет белый;
отступ: 12 пикселей 20 пикселей;
граница: нет;
радиус границы: 4 пикселя;
курсор: указатель;
}
input [type = submit]: hover {
цвет фона: # 45a049;
}
.container {
радиус границы: 5 пикселей;
цвет фона: # f2f2f2;
отступ: 20 пикселей;
}
Хорошо. Я не хочу вас слишком запутывать. Мы немного поработали, но пока не увидели никаких результатов. Так что давайте все сохраним и вернемся к терминалу. В корневой папке проекта запустите:
Откроется браузер с портом localhost: 3000. Теперь вы сможете увидеть нашу симпатичную маленькую форму такой.
Хорошо, отлично. Пришло время заняться реальным React.
Обработка формы с помощью React!
Теперь у нас есть базовая статическая форма React. Но пока ничего не делает. Нам понадобится начальное состояние и функция-обработчик отправки.
Состояние формы
Теперь мы добавим состояние для нашей формы. Для этого нужно создать конструктор:
конструктор (реквизит) {
супер (реквизит);
this.state = {
fname: '',
lname: '',
электронное письмо: '',
сообщение: '',
}
}
Затем нам понадобится наш метод обработчика отправки формы, например:
handleFormSubmit (событие) {
мероприятие.preventDefault ();
console.log (this.state);
}
На данный момент мы можем зарегистрировать состояние, чтобы увидеть, все ли значения сохранены в состоянии.
Наконец, давайте привяжем обработчик формы.
конструктор (реквизит) {
супер (реквизит);
this.state = {
fname: '',
lname: '',
электронное письмо: '',
сообщение: '',
}
}
Теперь мы должны установить наши начальные состояния как входные значения формы, и всякий раз, когда мы изменяем наш вход, мы будем устанавливать наше состояние на текущее входное значение.
На этом этапе мы меняем нашу форму следующим образом:
this.setState ({fname: e.target.value})}
/>
this.setState ({lname: e.target.значение })}
/>
this.setState ({электронная почта: e.target.value})}
/>
this.handleFormSubmit (e)} value = "Submit" />
form>
Если вы попытаетесь написать что-то в форме и попытаетесь отправить это сейчас, вы увидите свои данные в консоли.Откройте консоль и проверьте, работает ли она. Вывод консоли должен выглядеть так.
Отправьте электронное письмо с помощью PHP
Хорошо. Мы почти закончили с фронтенд-частью. Теперь нам нужен серверный язык для отправки писем на наш почтовый ящик. На этот раз я выбираю php. Прежде чем мы начнем писать внутреннюю часть, давайте добавим еще два свойства к нашему состоянию. Нам нужно добавить {error and mailSent}.
this.state = {
fname: '',
lname: '',
электронное письмо: '',
сообщение: '',
mailSent: false,
ошибка: нуль
}
Состояние готово.Начнем с php. Если вы создали свое приложение для реагирования уже в папке Apache или Nginx www, вы можете перейти в корень своего проекта и создать папку с именем api / contact внутри папки контактов.
Создайте файл index.php. Здесь будет работать наша электронная почта. Я хочу упомянуть, что мы не собираемся использовать подход ООП. Но если вам нужен более чистый PHP-код, вы можете немного его очистить и улучшить.
Из приложения React мы отправляем почтовый запрос на php api. В нашей контактной форме необходимо указать имя и адрес электронной почты.Потому что в php мы будем проверять эти два значения. Если эти два значения пусты, мы выдадим ошибку. Так что имейте это в виду.
Давайте добавим этот код в ваш файл index.php.
Php
заголовок ("Access-Control-Allow-Origin: *");
$ rest_json = file_get_contents ("php: // input");
$ _POST = json_decode ($ rest_json, истина);
если (пусто ($ _ POST ['имя']) && пусто ($ _ POST ['электронная почта'])) die ();
если ($ _POST)
{
http_response_code (200);
$ subject = $ _POST ['имя_файла'];
$ to = "[электронная почта защищена]";
$ from = $ _POST ['электронная почта'];
$ msg = $ _POST ['число'].$ _POST ['сообщение'];
$ headers = "Версия MIME: 1.0 \ r \ n";
$ headers. = "Content-type: text / html; charset = UTF-8 \ r \ n";
$ headers. = "От: <". $ от. ">";
почта ($ to, $ subject, $ msg, $ headers);
echojson_encode (массив (
"отправлено" => верно
));
}
еще
{
echojson_encode (["sent" => false, "message" => "Что-то пошло не так"]);
}
?>
В основном то, что мы делаем: мы проверяем имя и адрес электронной почты. Затем, используя функцию php mail (), мы отправляем электронное письмо на нашу учетную запись электронной почты с данными контактной формы.
Теперь, если вы перейдете в папку api http: // localhost / response-contact-form / api / contact
… ничего не должно быть видно. Поскольку наш api умирает, если мы не отправляем также имя и адрес электронной почты — он ищет почтовый запрос.
Отправка данных в API
Наш API готов, и теперь пришло время завершить нашу форму. Итак, нам нужно отправить наши данные, которые были сохранены в состоянии. Для этого мы можем использовать выборку Javascript. Но недавно я использовал другой пакет npm, который очень хорошо работает с React для HTTP-запросов.Может быть, вы уже знаете о нем Axios. Итак, нам нужно сначала установить этот пакет. Перейдите в папку вашего приложения React в консоли.
И выполнить:
Отлично. Теперь вернитесь в App.js и в верхней части файла вам нужно импортировать Axios.
импортировать axios из 'axios';
После импорта Axios мы должны создать константу для нашего пути api. Создайте константу перед классом App.
const API_PATH = 'http: // localhost: 1992 / response-contact-form / api / contact / index.php ';
Затем давайте воспользуемся Axios внутри метода handleFormSubmit для отправки наших данных на серверную часть.
handleFormSubmit = e => {
e.preventDefault ();
axios ({
метод: 'post',
url: `$ {API_PATH}`,
заголовки: {'content-type': 'application / json'},
данные: this.state
})
.then (результат => {
this.setState ({
mailSent: result.data.sent
})
})
.catch (error => this.setState ({error: error.message}));
};
Теперь у нас появилась возможность отправлять электронные письма через нашу контактную форму.Наконец, давайте покажем сообщение пользователю после того, как он отправил электронное письмо.
Добавьте это перед закрывающим тегом формы
.
{this.state.mailSent &&
Спасибо, что обратились к нам.
}
Теперь наш пользователь может видеть сообщение после отправки электронного письма.