Вам понадобится
- Базовые знания языков PHP и HTML
Инструкция
1
Шаг 1: создайте новый php-документ.
В любом текстовом редакторе (например - в стандартном Блокноте) создайте новый документ. Сразу впишите в него каркас html-кода страницы, который будете дополнять по ходу создания механизма отправки email-сообщений:
<html>
<head>
<title>Отправка eMail-сообщения</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
</body>
</html>
В любом текстовом редакторе (например - в стандартном Блокноте) создайте новый документ. Сразу впишите в него каркас html-кода страницы, который будете дополнять по ходу создания механизма отправки email-сообщений:
<html>
<head>
<title>Отправка eMail-сообщения</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
</body>
</html>
2
Шаг 2: добавьте в документ html-форму.
Теперь следует добавить между html-тегами <body> и </body> инструкции браузеру отобразить форму для ввода посетителем данных и отправки их на сервер. Сначала - открывающий тег формы:
<form method="POST">
Атрибут method указывает каким способом браузер должен отправить информацию на сервер.
Здесь нужно вставить инструкцию на языке php - она будет выводить сообщение для посетителя, после того как он отправит данные на сервер и они будут обработаны скриптом:
<?php if($mess) echo $msg; ?>
Следующая строка сформирует поле, в которе посетитель должен указать свое имя:
Ваше имя: <input type="text" name="name" /><br />
Здесь атрибут type указывает тип этого элемента формы - простое текстовое поле. А атрибут name это имя переменной, в которой введенное в это поле будет передано на сервер - name. Тег <br /> - «перевод каретки».
Дальше надо дать возможность посетителю указать свой email-адрес для связи с ним:
E-mail: <input type="text" name="email" /><br />
Здесь все аналогично предыдущей строке. Имя переменной, в которой на сервер будет передан почтовый адрес посетителя - email.
Теперь надо добавить многостраничное текстовое поле (тег textarea) для ввода текста сообщения:
Сообщение:<br /><textarea name="mess" rows="6" cols="20"></textarea><br />
Атрибуты rows и cols задают размер этого поля - rows указывает количество строк, а cols - число знаков в каждой строке. Введенный текст будет отправлен в переменной с имененм mess.
После всех полей добавьте кнопку для отправки сообщения:
<input type="submit" value="Отправить" /><br />
В атрибуте value этого тега указан текст надписи на кнопке («Отправить»).
Для работы php-скрипта будет нужна еще одна переменная, которая должна быть отправлена вместе с данными из формы. Разместите ее в скрытом от посетителя элементе формы:
<input type="hidden" name="act" value="send" />
Имя этой переменной "act", а передаваемое значение - "send".
Осталось добавить только закрывающий тег формы:
</form>
Теперь следует добавить между html-тегами <body> и </body> инструкции браузеру отобразить форму для ввода посетителем данных и отправки их на сервер. Сначала - открывающий тег формы:
<form method="POST">
Атрибут method указывает каким способом браузер должен отправить информацию на сервер.
Здесь нужно вставить инструкцию на языке php - она будет выводить сообщение для посетителя, после того как он отправит данные на сервер и они будут обработаны скриптом:
<?php if($mess) echo $msg; ?>
Следующая строка сформирует поле, в которе посетитель должен указать свое имя:
Ваше имя: <input type="text" name="name" /><br />
Здесь атрибут type указывает тип этого элемента формы - простое текстовое поле. А атрибут name это имя переменной, в которой введенное в это поле будет передано на сервер - name. Тег <br /> - «перевод каретки».
Дальше надо дать возможность посетителю указать свой email-адрес для связи с ним:
E-mail: <input type="text" name="email" /><br />
Здесь все аналогично предыдущей строке. Имя переменной, в которой на сервер будет передан почтовый адрес посетителя - email.
Теперь надо добавить многостраничное текстовое поле (тег textarea) для ввода текста сообщения:
Сообщение:<br /><textarea name="mess" rows="6" cols="20"></textarea><br />
Атрибуты rows и cols задают размер этого поля - rows указывает количество строк, а cols - число знаков в каждой строке. Введенный текст будет отправлен в переменной с имененм mess.
После всех полей добавьте кнопку для отправки сообщения:
<input type="submit" value="Отправить" /><br />
В атрибуте value этого тега указан текст надписи на кнопке («Отправить»).
Для работы php-скрипта будет нужна еще одна переменная, которая должна быть отправлена вместе с данными из формы. Разместите ее в скрытом от посетителя элементе формы:
<input type="hidden" name="act" value="send" />
Имя этой переменной "act", а передаваемое значение - "send".
Осталось добавить только закрывающий тег формы:
</form>
3
Шаг 3: добавьте php-код обработки данных из формы.
Нажатием кнопки с надписью «Отправить» посетитель отошлет введенную им информацию. Так как в теге form нет атрибута action, который должен указывать интернет-адрес скрипта для отправки данных, то они будут посланы на адрес этой же самой страницы. Поэтому в html-код этой страницы нужно добавить php-инструкции для получения, проверки и отправки на ваш email данных из формы.
Начинаться они должны с открывающего php-тега:
<?php
В следующей строке укажите переменную, которая будет содержать сообщение для посетителя. Пока пустую:
$msg = "";
Теперь скрипт должен проверить присланы ли данные из формы. Сервер, получая данные, отправленные методом POST, помещает их в суперглобальный массив с именем $_POST. Значит скрипту надо проверить - есть ли в этом массиве хоть какая-нибудь информация из формы. Посетитель мог не заполнить ни одного поля, но скрытая переменная все равно должна присутствовать - ее наличие и будем проверять:
if($_POST['act']=="send") {
Если такая переменная есть, то будет выполняться следующий блок инструкций скрипта. Дл удобства в начале этого блока поместите переменные, которые вы сможете изменять в дальнейшем:
$email_length = 500;
Это максимально разрешенное количество знаков в сообщении посетителя.
$email_html = false;
Если пользователь введет в сообщении html-теги, то они будут вырезаны скриптом. Если же их следует оставлять, то значение false этой переменной замените на true.
$email_recepient = "moi_adres@gmail.com";
Это адрес вашей почты, на который скрипт должен отправлять сообщения посетителей.
$email_subject = "Сообщение от посетителя сайта";
Переменная содержит текст, который будет указан в теме отсылаемого вам письма.
$email_regex = "/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/";
Эту переменную менять не следует – в ней содержится шаблон регулярного выражения, используемого скриптом для проверки правильности формата email-адреса, введенного посетителем в поле email. В следующей строке как раз и будет эта проверка:
if((!$_POST['email']) || (!preg_match($email_regex, $_POST['email']))) $msg .= "Указан неверный e-mail адрес.";
Если посетитель указал явно неправильный адрес для связи с ним, то скрипт выдаст сообщение об этом. Все такие сообщения до окончания работы скрипта суммируются в переменную $msg.
Теперь проверка наличия самого текста сообщения:
if (!$_POST['mess']) $msg .= " Нет текста сообщения";
Если посетитель оставил поле для текста пустым, то в переменную $msg добавится сообщение и об этом.
Если в переменной $email_html вы задали удаление html-тегов из текста сообщения, то скрипт сделает это в следующих двух строках:
$userMess = $_POST['mess'];
if(!$email_html) $userMess = strip_tags($userMess);
И в завершение всех проверок - проверка длинны сообщения:
if (strlen($userMess) > $email_length) $msg .= " Длина текста сообщения превышает допустимую ($email_length знаков).<br />\n";
Если хоть одна из проверок не пройдена, то переменная $msg уже не пуста. Тогда надо дооформить все записанные в нее сообщения об ошибках - добавить текст «Ошибка» и задать оттенок красного цвета:
if($msg) $msg = "<font color=\"crimson\">Ошибка: $msg</font>";
А если проверки пройдены, то подготовить данные к отправке на ваш адрес:
else {
$userMess = "Имя: ".$_POST['name']."<br>\n---<br>\n".$userMess."<br>\n<br>\n---<br>\n";
$headers="Content-Type: text/html; charset=windows-1251\n";
$headers.="From: <$_POST['email']>\nX-Mailer: siteMailer";
Следующая строка запускает почтовую программу вашего сервера и отправляет подготовленное сообщение:
mail($email_recepient, $email_subject, $userMess, $headers);
Теперь осталось составить сообщение для посетителя о том, что его послание отправлено:
$msg = "<font color=\"green\">Ваше сообщение отправлено. Спасибо!</font><br />\n";
}
}
?>
Нажатием кнопки с надписью «Отправить» посетитель отошлет введенную им информацию. Так как в теге form нет атрибута action, который должен указывать интернет-адрес скрипта для отправки данных, то они будут посланы на адрес этой же самой страницы. Поэтому в html-код этой страницы нужно добавить php-инструкции для получения, проверки и отправки на ваш email данных из формы.
Начинаться они должны с открывающего php-тега:
<?php
В следующей строке укажите переменную, которая будет содержать сообщение для посетителя. Пока пустую:
$msg = "";
Теперь скрипт должен проверить присланы ли данные из формы. Сервер, получая данные, отправленные методом POST, помещает их в суперглобальный массив с именем $_POST. Значит скрипту надо проверить - есть ли в этом массиве хоть какая-нибудь информация из формы. Посетитель мог не заполнить ни одного поля, но скрытая переменная все равно должна присутствовать - ее наличие и будем проверять:
if($_POST['act']=="send") {
Если такая переменная есть, то будет выполняться следующий блок инструкций скрипта. Дл удобства в начале этого блока поместите переменные, которые вы сможете изменять в дальнейшем:
$email_length = 500;
Это максимально разрешенное количество знаков в сообщении посетителя.
$email_html = false;
Если пользователь введет в сообщении html-теги, то они будут вырезаны скриптом. Если же их следует оставлять, то значение false этой переменной замените на true.
$email_recepient = "moi_adres@gmail.com";
Это адрес вашей почты, на который скрипт должен отправлять сообщения посетителей.
$email_subject = "Сообщение от посетителя сайта";
Переменная содержит текст, который будет указан в теме отсылаемого вам письма.
$email_regex = "/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/";
Эту переменную менять не следует – в ней содержится шаблон регулярного выражения, используемого скриптом для проверки правильности формата email-адреса, введенного посетителем в поле email. В следующей строке как раз и будет эта проверка:
if((!$_POST['email']) || (!preg_match($email_regex, $_POST['email']))) $msg .= "Указан неверный e-mail адрес.";
Если посетитель указал явно неправильный адрес для связи с ним, то скрипт выдаст сообщение об этом. Все такие сообщения до окончания работы скрипта суммируются в переменную $msg.
Теперь проверка наличия самого текста сообщения:
if (!$_POST['mess']) $msg .= " Нет текста сообщения";
Если посетитель оставил поле для текста пустым, то в переменную $msg добавится сообщение и об этом.
Если в переменной $email_html вы задали удаление html-тегов из текста сообщения, то скрипт сделает это в следующих двух строках:
$userMess = $_POST['mess'];
if(!$email_html) $userMess = strip_tags($userMess);
И в завершение всех проверок - проверка длинны сообщения:
if (strlen($userMess) > $email_length) $msg .= " Длина текста сообщения превышает допустимую ($email_length знаков).<br />\n";
Если хоть одна из проверок не пройдена, то переменная $msg уже не пуста. Тогда надо дооформить все записанные в нее сообщения об ошибках - добавить текст «Ошибка» и задать оттенок красного цвета:
if($msg) $msg = "<font color=\"crimson\">Ошибка: $msg</font>";
А если проверки пройдены, то подготовить данные к отправке на ваш адрес:
else {
$userMess = "Имя: ".$_POST['name']."<br>\n---<br>\n".$userMess."<br>\n<br>\n---<br>\n";
$headers="Content-Type: text/html; charset=windows-1251\n";
$headers.="From: <$_POST['email']>\nX-Mailer: siteMailer";
Следующая строка запускает почтовую программу вашего сервера и отправляет подготовленное сообщение:
mail($email_recepient, $email_subject, $userMess, $headers);
Теперь осталось составить сообщение для посетителя о том, что его послание отправлено:
$msg = "<font color=\"green\">Ваше сообщение отправлено. Спасибо!</font><br />\n";
}
}
?>
4
Шаг 4: разместите страницу на сервере.
Созданную php-страницу сохраните с нужным вам именем и расширением php и загрузите на сервер к вашему сайту.
Конечно, это страница «в голом виде», вам нужно оформить ее так же, как оформлены остальные страницы вашего сайта. Или же взять элементы этой страницы и добавить их в уже существующую страницу сайта.
Созданную php-страницу сохраните с нужным вам именем и расширением php и загрузите на сервер к вашему сайту.
Конечно, это страница «в голом виде», вам нужно оформить ее так же, как оформлены остальные страницы вашего сайта. Или же взять элементы этой страницы и добавить их в уже существующую страницу сайта.
Видео по теме
Источники:
- как сделать почту на сайте в 2018