Как скопированную страницу отправить на почту. Как отправить веб-страницу на электронную почту? Создаем файл, принимающий данные из HTML формы

Одной из самых востребованных функций на сайте является форма заявки или заказа, данные из которой отправляются на почту владельцу сайта. Как правило такие формы являются простыми и состоят из двух трех полей для ввода данных. Как же создать такую форму заказа? Здесь потребуется использование языка разметки HTML и языка программирования PHP.

Язык разметки HTML сам по себе несложен, нужно всего лишь разобраться в том как и где ставить те или иные теги. С языком программирования PHP все немного сложнее.

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

Создаем форму отправки данных в html

Первая строка будет следующей

Это очень важный элемент формы. В нем мы указываем каким способом будут передаваться данные и какому файлу. В данном случае все передачется методом POST файлу send.php. Программа в этом файле соответственно должна принять данные, они будут содержаться в post массиве, и отправить их на указанный email адрес.

Вернемся к форме. Вторая строка будет содержать поле для ввода ФИО. Имеет следующий код:

Тип формы text, то есть пользователь сможет ввести или скопировать сюда текст с клавиатуры. Под параметром name содержится название формы. В данном случае это fio, именно под таким именем будет передаваться все, что пользователь введен в данноу поле. Параметр placeholder указывает на то, что будет записано в этом поле в виде пояснения.

Следующая строка:

Здесь практически все то же самое, но имя для поля указано email, а пояснении указано, чтобы пользователь в эту форму ввел свой адресс электронной почты.

Следующей строкой будет кнопка "отправить":

И последней строкой в форме будет тэг

Теперь соберем все вместе.





Теперь сделаем так, чтобы поля в форме стали обязательными для заполнения. Имеем следующий код:





Создаем файл, принимающий данные из HTML формы

Это будет файл с именем send.php

В файле на первом этапе нужно принять данные из пост массива. Для этого создаем две переменные:

$fio = $_POST["fio"];
$email = $_POST["email"];

Перед названиями переменных в php ставится знак $, в конце каждой строки ставиться точка с запятой. $_POST это массив в который передаются данный из формы. В форме html при этом указан метод отправки method="post". Так, приняты две переменные из формы html. Для целей защиты своего сайта нужно провести эти переменные через несколько фильтров - функций php.

Первая функция преобразует все символы, которые пользователь попытается добавить в форму:

При этом новые переменные в php не создаются, а используются уже имеющиеся. Что сделает фильтр, он преобразует символ "<" в "<". Также он поступить с другими символами, встречающимися в html коде.

Вторая функция декодирует url, если пользователь попытается его добавить в форму.

$fio = urldecode($fio);
$email = urldecode($email);

Третей функцией мы удалим пробелы с начала и конца строки, если таковые имеются:

$fio = trim($fio);
$email = trim($email);

Существуют и другие функции, позволяющие отфильтровать переменные php. Их использование зависит от того, насколько вы опасаетесь того, что злоумышленник попытается добавить программный код в данную форму отправки данных на почту html.

Проверка данных, передаваемых от HTML формы в файл PHP

Для того, чтобы проверить, работает ли этот код, передаются ли данные можно просто их вывести на экран при помощи функции echo:

echo $fio;
echo "
";
echo $email;

Вторая строка здесь нужна для того, чтобы разделить вывод переменных php на разные строки.

Отправляем полученные данные из формы HTML на почту при помощи PHP

Для отправки данных на почту нужно воспользоваться функцией mail в PHP.

mail("на какой адрес отправить", "тема письма", "Сообщение (тело письма)","From: с какого email отправляется письмо \r\n");

Например, нужно отправить данные на email владельца сайта или менеджера [email protected].

Тема письма должна быть понятной, а сообщение письма должно содержать то, что указал пользователь в HTML форме.

mail("[email protected]", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n");

Необходимо добавить условие, которе проверит отправилась ли форма при помощи PHP на указанные адрес электронной почты.

if (mail("[email protected]", "Заказ с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n"))
{
echo "сообщение успешно отправлено";
} else {
}

Таким образом программный код файла send.php, который отправит данные HTML формы на почту будет выглядеть следующим образом:

$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
//echo $fio;
//echo "
";
//echo $email;
if (mail("[email protected]", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n"))
{ echo "сообщение успешно отправлено";
} else {
echo "при отправке сообщения возникли ошибки";
}?>

Три строки для проверки, передаются ли данные в файл закомментированы. При необходимости их можно удалить, так как они нужны были только для отладки.

Помещаем HTML и PHP код отправки формы в один файл

В комментариях к этой статье многие задают вопрос о том, как сделать, чтобы и HTML форма и PHP код отправки данных на почту находились в одном файле, а не двух.

Для реализации такой работы нужно поместить HTML код формы в файл send.php и добавить условие, которое будет проверять наличие переменных в массиве POST (этот массив передается из формы). То есть, если переменные в массиве не существуют, то нужно показать пользователю форму. Иначе нужно принять данные из массива и отправить их адресату.

Давайте посмотрим как изменить PHP код в файле send.php:



Форма заявки с сайта


//проверяем, существуют ли переменные в массиве POST
if(!isset($_POST["fio"]) and !isset($_POST["email"])){
?>





} else {
//показываем форму
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail("[email protected]", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n")){
echo "Сообщение успешно отправлено";
} else {
echo "При отправке сообщения возникли ошибки";
}
}
?>

Существование переменной в POST массиве мы проверяем PHP функцией isset(). Восклицательный знак перед этой функцией в условии означает отрицание. То есть, если переменной не существует, то нужно показать нашу форму. Если бы я не поставил восклицательный знак, то условие дословно означало бы - "если существует, то показать форму". А это неправильно в нашем случае. Естественно, что вы можете переименовать его в index.php. Если будуту переименовывать файл, то не забудьте переименовать название файла и в строке

. Форма должна ссылаться на эту же страницу, например index.php. В код я добавил заголовок страницы.

Частые ошибки, возникающие при отправке PHP формы с сайта

Первая, наверное самая популярная ошибка, это когда вы видите пустую белую страницу без сообщений. Это означает, что вы допустили ошибку в коде страницы. Вам нужно включить отображение всех ошибок в PHP и тогда вы увидите, где допущена ошибка. Добавьте в код:

ini_set("display_errors","On");
error_reporting("E_ALL");

Файл send.php должен запускаться только на сервере, иначе код просто не будет работать. Желательно, чтобы это был не локальный сервер, так как он не всегда настроен на отправку данных на внешний почтовый сервер. Если вы запустите код не на сервере, то вам отобразиться код PHP прямо на странице.

Таким образом, для корректной работы я рекомендую поместить файл send.php на хостинг сайта. Там, как правило, все уже настроено.

Еще одна частая ошибка, когда появляется оповещение "Сообщение успешно отправлено", а письмо не приходит на почту. В этом случае нужно внимательно проверить строку:

if (mail("[email protected]", "Заказ с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n"))

Вместо [email protected] должен быть email адрес на который нужно отправить письмо, а вместо [email protected] должен быть существующий email данного сайта. Например для сайта сайт это будет . Только в этом случае письмо с данными из формы будет отправлено.

Какими способами можно отправить веб-страницу на электронную почту?
Различными способами, смотря что подразумевал автор вопроса.

Например, имея программу для снятия скриншотов, можно сделать скриншот открытой страницы и послать его в виде изображения на электронную почту нужного вам человека. В этом случае будет мёртвое изображение, и ссылки работать не будут.

Подозреваю, что более правильным ответом будет сохранение страницы стандартными методами. Нажимаем в браузере меню "файл", затем "сохранить как" и сохраняем веб-страницу полностью. При наличии интернета у человека, кому послан а эта страница, он сможет пройти по ссылкам со страницы, они будут рабочими.

В первом случае страницу будет открыть легче, если будет выбран распространённый формат изображений - bmp, jpg, gif. Во втором случае могут быть проблемы с отображением страницы, сохранённой в одном браузере, но открываемой в другом, может отображаться некорректно или совсем не открываться.

Оба случая рассчитаны для сохранения в архиве, для посылки человеку, не имеющему постоянного доступа в интернет. В этом случае лучше делать вложение к письму.

Но если у человека всегда есть интернет - зачем сохранять и посылать ему страницу, делать вложение? Куда проще скопировать в адресной строке ссылку нужной страницы и вставить в текст письма.

Для этого можно воспользоваться специализированными онлайн сервисами для архивирования, например - Archive.today: archive today

Здесь достаточно просто разместить URL адрес ресурса и система сама создаст zip файл и URL ссылку на «снимок» веб-страницы, который всегда будет онлайн, даже если исходный вариант исчезнет.

Zip файл можно прикрепить к электронному письму, ссылку на «снимок» веб-страницы вставить в поле письма и отправить все это по электронной почте или сохранить любым другим способом.

Например, сегодняшняя версия страницы Moscow FAQ (вместе с zip файлом) доступна здесь: archive today

Также можно использовать онлайн-сервисы для создания скриншотов, например Web-capture: web-capture net

Какими способами можно отправить веб-страницу на электронную почту?
Различными способами, смотря что подразумевал автор вопроса.

Например, имея программу для снятия скриншотов, можно сделать скриншот открытой страницы и послать его в виде изображения на электронную почту нужного вам человека. В этом случае будет мёртвое изображение, и ссылки работать не будут.

Подозреваю, что более правильным ответом будет сохранение страницы стандартными методами. Нажимаем в браузере меню "файл", затем "сохранить как" и сохраняем веб-страницу полностью. При наличии интернета у человека, кому послан а эта страница, он сможет пройти по ссылкам со страницы, они будут рабочими.

В первом случае страницу будет открыть легче, если будет выбран распространённый формат изображений - bmp, jpg, gif. Во втором случае могут быть проблемы с отображением страницы, сохранённой в одном браузере, но открываемой в другом, может отображаться некорректно или совсем не открываться.

Оба случая рассчитаны для сохранения в архиве, для посылки человеку, не имеющему постоянного доступа в интернет. В этом случае лучше делать вложение к письму.

Но если у человека всегда есть интернет - зачем сохранять и посылать ему страницу, делать вложение? Куда проще скопировать в адресной строке ссылку нужной страницы и вставить в текст письма.

Для этого можно воспользоваться специализированными онлайн сервисами для архивирования, например - Archive.today: archive today

Здесь достаточно просто разместить URL адрес ресурса и система сама создаст zip файл и URL ссылку на «снимок» веб-страницы, который всегда будет онлайн, даже если исходный вариант исчезнет.

Zip файл можно прикрепить к электронному письму, ссылку на «снимок» веб-страницы вставить в поле письма и отправить все это по электронной почте или сохранить любым другим способом.

Например, сегодняшняя версия страницы Moscow FAQ (вместе с zip файлом) доступна здесь: archive today

Также можно использовать онлайн-сервисы для создания скриншотов, например Web-capture: web-capture net

В Интернете есть масса интересного и полезного контента. Иногда бывает гораздо проще отправить другу ссылку на интересную информацию вместо того, чтобы копировать ее с сайта и пересылать другими способами. Как отправить ссылку максимально удобно?

Электронная почта

Большинство современных сервисов электронной почты поддерживают возможность простой вставки ссылки. То есть, вам достаточно скопировать ее из адресной строки браузера, после чего вставить в письмо и она станет «кликабельной», то есть, после нажатия на нее, автоматически откроется нужная страничка.

Если вы набираете адрес сайта или странички вручную, ссылка не будет работать таким образом. Чтобы исправить это, попробуйте в начале ссылки написать http:// или www. То есть, вместо site.com вам нужно написать http://site.com либоwww.site.com После этого ссылка будет кликабельной.

Также вы можете привязать ссылку к определенным словам в письме. Для этого их нужно выделить и нажать на панели инструментов «Вставить ссылку», после чего указать в окне адрес нужной странички. Если ваша почта поддерживает использование html-тегов, то вставить ссылку можно так: слова, к которым вы привязываете ссылку.

Одноклассники

Перед тем, как отправить ссылку в Одноклассниках, вам нужно скачать специальный софт, позволяющий сделать это. Одной из таких программ является GF Tools. Она абсолютно бесплатна и очень проста в использовании. Также вы можете просто вставить текст ссылки в сообщение, которое вы отправляете другому пользователю. Ее можно разместить и в сообщении на стене.

Вконтакте

Также ссылку можно вставлять в статус и сообщения на стене. В таком случае, ссылка также будет «кликабельной» для всех пользователей. При вставке ссылки на стену скрипт сайта автоматически покажет первое изображение со странички, на которую дана ссылка, а также несколько строчек текста с нее.