Скрипт отправки формы на e mail. Простейшая форма отправки данных на почту при помощи HTML и PHP

Одной из наиболее часто встречающихся на практике задач является реализация формы обратной связи. Тобишь написание ее HTML кода, оформление ее на CSS, создание PHP скрипта, который бы обрабатывал полученные от пользователя данные и отправлял их на нашу почту, написание JS скрипта, который бы проверял форму на адекватность вводимых данных, защита нашего детища от спама, чтобы наш почтовый ящик не обвалился от атак ботов.

Все вышеперечисленные моменты будут рассмотрены в нашем обзоре и подробно прокомментированы.

Итак, начинаем создание формы обратной связи:

HTML

В первую очередь мы пишем HTML код, в нем задаются поля, которые будет заполнять пользователь. Они же в дальнейшем будут оформляться. Код формы выглядит следующим образом:

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" > Имя: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" > Телефон: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" > E- mail : < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" > Сообщение: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Отправить" />

И визуально она выглядит сейчас следующим образом:

Согласен, пока все некрасиво и ничего не понятно, но мы только начали.

Рассмотрим приведенный выше код подробно:

  • < form method= "post" action= "mail.php" > …


    для того, чтобы создать форму необходимо использовать тег form. Именно он определяет начало и конец формы для интерпретатора кода. У него, как и у любого тега, есть целый набор атрибутов, но обязательных для работы формы всего два, это method (метод отправки запроса на сервер, для форм стандартно используют post) и action (указывает путь к файлу-обработчику формы, именно в этом файле будет содержаться скрипт на PHP, который после будет отправлять введенные пользователем значения нам на почту, в нашем случае мы видим, что это файл называется mail.php и лежит он в том же директории сайта, что и рассматриваемая нами страница).
  • < input maxlength= "30" type= "text" name= "name" />


    Далее у нас следуют инпуты. Это собственно сами поля формы в которые пользователи будут вводить необходимую нам информацию (type="text" говорит о том, что это будет текст). Атрибут maxlength указывает сколько символов может ввести пользователь в данное поле формы. Самый важный атрибут это name – он задает имя конкретного поля. Именно по этим именам в дальнейшем PHP скрипт будет обрабатывать поступающую в него информацию. При желании можно еще задать атрибут placeholder, который выводит внутри поля текст исчезающий при установке курсора внутри нее. Одной из проблем плейсхолдера является то, что он не поддерживается некоторыми старыми браузерами.
  • < label for = "name" > Имя:


    Используется в случае если мы отказались от плейсхолдеров. Обычная подпись поля, атрибут for сообщает к какому конкретно полю относится данная подпись. Значением указывается name интересующего нас поля.
  • < textarea rows= "7" cols= "50" name= "message" >


    Также как и инпут предназначен для введения пользователем информации, только на этот раз поле заточено для длинных сообщений. Rows указывает размер поля в строках, cols в символах. В целом они задают высоту и ширину нашего поля.
  • < input type= "submit" value= "Отправить" />


    О том, что это кнопка для отправки формы нам сообщает type="submit", а value задает текст, который будет внутри этой кнопки.
  • < div class = "right" >


    использованы только для дальнейшего визуального оформления формы.
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.

    В конечном итоге его код будет выглядеть следующим образом:

    Ваше сообщение успешно отправлено

    Обсуждение HTML и CSS части этого документа можно пропустить. По своей сути это обычная страница сайта, которую Вы можете оформить по своему желанию и необходимости. Рассмотрим же важнейшую ее часть – PHP скрипт обработки формы:

    $back = "

    Вернуться назад

    " ;

    Этой строкой мы создаем ссылку для возвращения на предыдущую страницу. Поскольку мы заранее не знаем с какой страницы пользователь попадет на эту, то делается это при помощи маленькой 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 . "
    Его номер: " . $phone . "
    Его почта: " . $mail . "
    Его сообщение: " . $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 должны совпадать иначе в получаемых на почту сообщениях вместо русских или английских букв будут выводиться «кракозябры».

    Многие не указывают кодировку отправляемого сообщения явно, но на некоторых почтовых клиентах из-за этого в дальнейшем могут возникнуть проблемы (на почту приходят нечитабельные письма), потому я рекомендую ее все-же указывать.

    Проверка формы на адекватность вводимых данных

    Чтобы пользователи по невнимательности не промахивались полями и заполняли все корректно стоит поставить проверку вводимых данных.

    Это можно сделать как на PHP на стороне сервера, так и на JS на стороне клиента. Я использую второй вариант, поскольку так человек сразу может узнать что он сделал не верно и исправить ошибку не делая дополнительных переходов по страницам.

    Код скрипта вставляем в том же файле, где у нас располагается HTML часть формы. Для нашего случая он будет выглядеть так:

    < script> function checkForm(form) { var name = form. name. value; var n = name. match(/ ^[ A- Za- zА- Яа- я ] * [ A- Za- zА- Яа- я ] + $/ ) ; if (! n) { alert("Имя введено неверно, пожалуйста исправьте ошибку" ) ; return false ; } var phone = form. phone. value; var p = phone. match(/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ) ; if (! p) { alert("Телефон введен неверно" ) ; return false ; } var mail = form. mail . value; var m = mail . match(/ ^[ 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] + $/ ) ; if (! m) { alert("E-mail введен неверно, пожалуйста исправьте ошибку" ) ; return false ; } return true ; }

    Ну а теперь обычный разбор:

    Для того, чтобы при нажатии на кнопку отправки формы, у нас происходила ее проверка вешаем запуск нашего скрипта на тег form:

    < form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

    Теперь по пунктам забираем состав проверки:


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

    В данной статье мы предложим свою наработку универсальной отправки форм на E-mail с проверкой на заполненность средствами PHP и Jquery. Плагин легко можно интегрировать в любой сайт без глубокого анализа кода и архитектуры. В статье мы рассмотрим принцип работы плагина, процедуру инициализации, конфигурации и установки.

    Отличительные особенности и возможности плагина универсальной отправки форм:

    • Проверка заполненности форм с возможностью группировки элементов и выводом подсказок для пользователя
    • Множество шаблонов для отправки с возможностью автоматического выбора шаблона
    • Работа формы без перезагрузки - AJAX
    • Обработка удачных и ошибочных отправок
    • Уникальные заголовки писем
    • Отправка файлов на E-mail

    Универсальный плагин отправки форм с проверкой на E-mail состоят из основных частей:

    • HTML форма для заполнения
    • JQuery скрипт для проверки и отправки AJAX
    • PHP скрипт для автоматизации обработки данных, отправленных с формы, подключения шаблонов писем и обработки результатом отправки
    • PHPMailer в качестве smtp клиента для процедуры отправки письма
    • TPL файлы шаблонов отправки письма
    Установка примера плагина на хост веб-сервера и первая отправка формы на E-mail

    Скачав и распаковав плагин мы увидим следующее дерево файлов и каталогов:

    /css/style.css // Файл основных стилей /css/font-awesome.css // Файл стилей шрифта FontAwesome /fonts/* // Файлы шрифта /js/script.js // JQuery скрипт проверки и AJAX отправки формы /mail-tpl/* // Каталог файлов шаблонов /php/phpmailer/* // Каталог файлов PHPMailer /php/config.php // Конфигурация SMTP подключения /php/function-send-form.php //Функция обработки и универсальной отправки на почту E-mail index.html // HTML форма отправки

    Для дальнейшего первого опыта отправки демонстрационной формы нам необходимо сконфигурировать файл /php/config.php :

    $__smtp = array("host" => "smtp.host.ru", "debug" => 0, "auth" => true, "port" => "465", "username" => "[email protected]", "password" => "123456", "addreply" => "[email protected]", "replyto" => "[email protected]", "secure" => "ssl");

    Останавливаться подробно на процедуре конфигурации файла config.php мы не будем.

    После успешной и корректной редакции конфигурационного файла нам необходимо разместить файлы архива на любой веб сервер. В режиме просмотра локальных файлов в браузере данный скрипт не сработает. Заливаем все содержимое в любую папку на хосте веб сервера и открываем через браузерную строку адреса ссылку:

    http(https)://domen.domen/path/to/dir/index.html

    Если у нас открылась презентационная страница с описанием и формой - все сделано верно. Далее мы заполняем форму и ждем кнопку "Отправить". В случае успешной отправки форма выведем соответствующее сообщение. В случае ошибок при отправке - выведется информация об ошибке. Процедуру отладки PHPMailer мы так же рассматривать не будем.

    Установка и интеграция плагина универсальной отправки формы на E-mail на сайт

    Для установки плагина на существующий сайт необходимо:

    1. Копировать следующий перечень файлов и каталогов: /js/script.js // JQuery скрипт проверки и AJAX отправки формы /mail-tpl/* // Каталог файлов шаблонов /php/phpmailer/* // Каталог файлов PHPMailer /php/config.php // Конфигурация SMTP подключения /php/function-send-form.php //Функция обработки и универсальной отправки на почту E-mail2. Создать новую или отредактировать существующую форму по следующему примеру: ОБРАТНАЯ СВЯЗЬ radio 1 radio 2 radio 3 Я ознакомился и согласен с правилами Отправить

    Описание и назначение ключевых атрибутов формы для корректно работы скрипта. Необязательные параметры скрипта выделены жирным курсивом:

    2.1. Тег form:

    name - Определяет название шаблона tpl при обработке полученного массива POST скриптом function-send-form.php. Название шаблона письма должно соответствовать значению атрибута name и формируется по маске ".tpl "

    method - значение атрибута всегда POST. В противном случае функция обработки формы PHP не сработает. По умолчанию скрипт обработки данных function-send-form.php ориентирован только на POST параметры формы.

    class - атрибут может содержать любое количество набора классов, но для корректно работы JQuery скрипта необходимо наличие класса sendler. По данном классу происходит отслеживание события отправки формы на вашем сайте.

    2.2. Поля для заполнения внутри формы могут содержать следующие атрибуты:

    name - определяет имя POST параметра

    type - для корректно работы формы и распознания типов элементов формы атрибут рекомендуется к обязательному использованию

    title - выводит подсказку в тег, который указан классов в атрибуте текущего тега confirminfo

    class - все поля, обязательные для заполнения и проверки должны содержать в значении атрибута класс "Y-required ", "group000_Y-required ". group000_Y-required - группирует необходимые элементы в группы, для проверки заполненности одного из элементов группы. Radio группировать не нужно, группировка происходит про атрибуту name, как это заложено разработчиками type

    confirminfo - значение атрибута определяет класс тега, куда выводится предупреждение о незаполненности элемента формы

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

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

    3. В результате редактирования или создания формы должен отрабатывать JQuery обработка формы с функцией AJAX. Результат работы формы должен вернуться в тег с классом "response ". Если у вас что-то работает неправильно - свертись с примером, приложенным в виде архива к данной статье. Принцип работы плагина универсальной отправки форма на E-mail с проверкой

    Плагин отправки формы на E-mail работы в несколько этапов и по следующему принципу.

    1. Срабатывает событие отправки формы с классом sendler.

    2. Событие отправки формы перехватывает JQuery скрипт и запускает процедуру проверки формы на корректность заполнения.

    3. В случае нарушений правил заполнения формы скрипт добавляет к обязательным полям на заполнение класс wrong и, в случае наличия необходимых атрибутов title и confirminfo, выводит сообщения с подсказками для заполнения.

    4. В случае успешного прохождения проверки формы запускается функция отправки формы AJAX запросом на обработчик (ссылку), указанный в атрибуте action.

    5. Серверный обработчик получает необходимые параметры AJAX запроса, подключает необходмый шаблон письма (ориентируясь на атрибут name формы - POST параметр template). Далее происходит инициализация класса PHPMailer, формирования тела письма, заголовков и поцидура отправки письма на E-mail

    6. В случае успешно или неуспешной отправки письма серверный обработчик вернет соответствующее сообщение на страницу в JQuery скрипт

    Правила создания и редактирования tpl шаблонов письма

    Правила верстки html писем мы рассматривать не будем. Рассмотрим обязательные параметры tpl шаблона письма и принцип создания шаблонов для скрипта универсальной отправки формы на E-mail.

    Рассмотрим пример из архива:

    Заказ обратного звонка от:

    Данные для обратной связи:

    Время обратного звонка:

    Текст сообщения:

    // include футера письма, аналогично шапке

    Как можно заменить, значения атрибутов name тегов формы идентичны именам переменных в шаблоне письма tpl. Все верно, так оно и есть!

    Все вновь созданные шаблоны складываем в каталог mail-tpl с расширением файла .tpl .

    Название tpl документа должно совпадать значению атрибута name формы отправки на сайте.

    Завершение

    Пожалуй, это вся необходимая информация для эффективного использования плагина универсальной отправки форм на E-mail с проверкой. Всем спасибо за внимание!

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

    Для этого создадим два файла - forma.php и mail.php . В первом файлике будет находиться только форма с полями для ввода пользователем данных. Внутри тега form - кнопка "Отправить" и атрибут action , который ссылается на обработчик - mail.php , именно к нему обращаются данные из формы при нажатии кнопки "Отправить" . В нашем примере данные формы отправляются на веб-страницу с названием «/mail.php» . На этой странице прописан скрипт на PHP , который обрабатывает данные формы:


    Данные формы отправляются методом POST (обрабатывается как $ _POST ). $ _POST - это массив переменных, переданных текущему скрипту через метод POST .

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




    Форма обратной связи на PHP с отправкой на почту


    Форма обратной связи на PHP





    Оставьте сообщение:
    Ваше имя:



    E-mail:

    Номер телефона:

    Сообщение:

    Текстовая область может содержать неограниченное количество символов-->







    Так форма визуально выглядет в браузере.

    Далее пишем код для файла mail.php . Придумываем сами имена для переменных. В PHP переменная начинается со знака $ , а затем имя переменной. Текстовое значение переменной заключается в кавычки. С помощью переменных на емайл администратора передается содержимое формы, просто подставив в квадратные скобки имя элемента формы - значение name .

    Таким образом данные из массива $_POST будут переданы соответствующим переменным и отправлены на почту при помощи функции mail . Давайте заполним нашу форму и нажмем кнопку отправить. Не забудьте указать ваш е-майл. Письмо пришло моментально.

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

    Html формы с полем отправки файла

    Html формы с полем отправки файла представлен ниже. При клике по кнопке " browse " пользователь получает возможность выбрать файл на своей локальной машине.

    Имя: Email: Message: Выберите файл для загрузки:

    Форма будет выглядеть следующим образом:

    Обратите внимание, что в атрибутах формы мы указали enctype="multipart/form-data" . Это скажет браузеру, что форма может быть использована для отправки файлов. Также мы добавили поля " name " и " email " с целью собрать как можно больше информации о пользователе. Затем идет поле отправки файла.

    Выберите файл для загрузки:

    При клике по кнопке submit , данные, включая данные о посылаемом файле, отправятся в файл-обработчик, путь к которому мы указали в атрибуте формы action .

    Получаем информацию о загруженном файле

    Сперва мы проверим полученные данные, затем, в случае успешной проверки, отправим данные на электронную почту.

    Всю информацию о загруженных файлах можно получить при помощи массива $_FILES .

    Содержимое массива $_FILES для нашего примера приведено ниже. Обратите внимание, что значение атрибута name (у нас оно равно uploaded_file) в поле выбора файла может быть любым.

    • $_FILES["uploaded_file"]["name"]
      Оригинальное имя файла на компьютере пользователя.
    • $_FILES["uploaded_file"]["type"]
      Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". Этот mime-тип не проверяется в PHP, так что не полагайтесь на его значение без проверки.
    • $_FILES["uploaded_file"]["size"]
      Размер в байтах принятого файла.
    • $_FILES["uploaded_file"]["tmp_name"]
      Временное имя, с которым принятый файл был сохранен на сервере.
    • $_FILES["uploaded_file"]["error"]
      Код ошибки, которая может возникнуть при загрузке файла. Этот элемент был добавлен в PHP 4.2.0

    Получаем имя, тип и размер загруженного файла:

    //Получаем последний компонеет имени загруженного файла $name_of_uploaded_file = basename($_FILES["uploaded_file"]["name"]); // например, index.php //получаем расширение файла (без точки) $type_of_uploaded_file = substr($name_of_uploaded_file, // позиция вхождения точки + 1 strrpos($name_of_uploaded_file, ".") + 1); $size_of_uploaded_file = $_FILES["uploaded_file"]["size"]/1024; //размер в KBs

    Как видите, информация о загруженном файле доступна через массив $_FILES .

    Проверяем размер и тип расширения загруженного файла

    Предположим, что получаемый файл должен быть изображением (" jpg ", " jpeg ", " gif ", " bmp ") и не должен превышать 100 Kb. Тогда наш код будет выглядеть так:

    //Настройки $max_allowed_file_size = 100; // размер в KB $allowed_extensions = array("jpg", "jpeg", "gif", "bmp"); //Проверки if($size_of_uploaded_file > $max_allowed_file_size) { $errors .= "\n Размер файла должен быть меньше $max_allowed_file_size"; } //------ Проверяем расширение файла ----- $allowed_ext = false; for($i=0; $isetTXTBody($text); $message->addAttachment($path_of_uploaded_file); $body = $message->get(); $extraheaders = array("From"=>$from, "Subject"=>$subject,"Reply-To"=>$visitor_email); $headers = $message->headers($extraheaders); $mail = Mail::factory("mail"); $mail->send($to, $headers, $body);

    Класс Mail_mime() поможет в создании MIME послания. В приведенном выше коде мы создали объект Mail_mime , обновили тело письма ($message->setTXTBody($text);) и добавили прикрепленный файл ($message->addAttachment(file)).

    Прежде чем использовать классы PEAR необходимо установить PEAR на вашем сервере. Вот быстрый способ установить PEAR:
    Скачайте инсталлятор PEAR

    Сохраните файл как " pear-installer.php ". Загрузите этот файл на ваш сервер в любой каталог. Затем пропишите путь к файлу в вашем браузере:
    http://www.yourdomain.com/pear-installer.php
    Появится веб-интерфейс для установки PEAR на вашем сайте. Следуйте инструкции по установке. После установки Pear, найдите и установите пакеты " mail " и " mail_mime ".

    Простая форма с загрузкой, скачать

    Архив содержит простую форму с отправкой загруженного файла на почту.

    Дата добавления: 2011-12-01

    

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

    Сам процесс создания формы и отправки письма несложен. Но есть некоторые моменты, которые могут испортить настроение на целый день.

    Первая трудность - глупый и устаревший стандарт для писем на русском языке. Из-за него к вам на почту могут приходить письма с "кракозябрами". Особенно эта проблема заметна на почтовых клиентах типа Windows Mail, Outlook Express и т.д. Если читать письма через веб-интерфейс, то проблема не так актуальна. Многие почтовые сервера достаточно умны, чтобы корректно отобразить письмо.

    Вторая проблема - нежелательные письма. Некоторые "альтернативно" одаренные личности могут без конца нажимать на кнопку отправления писем (флуд). К ним можно также отнести ботов - специально написанные программы, которые сами нажимают на кнопки.

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

    Если описанные трудности вас не успугали и вы хотите получать сообщения с сайта, то продолжим...

    Начнем с простейшего примера без наворотов.

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

    Мы только что создали форму с двумя текстовыми полями и кнопкой. Обратите внимание, что у формы мы определили метод post и указали в параметре action путь к обработчику формы - mail.php. Естественно, вы можете указать свой адрес и другое имя для файла.

    Теперь создадим файл mail.php (в нашем примере он должен находиться в той же папке).

    В принципе этого достаточно для отправки письма. Главное, убедитесь, что у вас на сайте разрешено использовать функцию mail(), так как некоторые хостеры отключают ее или вводят различные ограничения на количество отправляемых писем.

    Укрепляем оборону

    В описанном примере есть минимальная защита в виде функции htmlspecialchars . Еще одной формой защиты может стать использование сессий.

    В самом начале первого файла введите следующее.