форма отправки сообщения на почту php
Простая форма обратной связи на PHP. Отправка данных из формы на почту
Сегодня я вам покажу самую простую форму обратной связи на HTML и PHP. Весь код, с описанием, представлен в записи. Для создания формы вам понадобятся базовые знания HTML и PHP.
Для того чтобы ваша форма работала, необходимо:
Здесь стандартный базовый шаблон.
В body, мы пишем вывод сообщений и форму, которая будет состоять из нескольких полей, в нашем случае это email, имя и сообщение. Для каждого поля нужно задать уникальный атрибут name.
Теперь перейдём в PHP:
Скрип читается так…
Если кнопка btn_submit нажата, то создается массив errors в который мы будем записывать ошибки.
Теперь проверим форму на заполненность полей, если какое либо поле не заполнено, то мы выводим соответствующие ошибки.
Далее если массив ошибок пуст, то мы запускаем обработчик. В переменную message мы записываем данные которые будут отправлять вам на почту.
После этого мы записываем функцию отправки формы send_mail($message). Функцию я записал чуть ниже. Отправляется сообщение и выводится текст об успешной отправке.
Функция обработки выглядит, следующим образом…
В переменную mail_to мы записываем адрес почты на которую будет отправляться письмо.
В переменную subject записывается название письма.
Далее идут правила обработки формы. Здесь же мы пишем от кого письмо и вводим адрес почты.
И в конце мы отправляем форму через функцию mail.
На этом все. Вот так выглядит полный код формы обратной связи.
Простейшая форма отправки данных на почту при помощи HTML и PHP
Одной из самых востребованных функций на сайте является форма заявки или заказа, данные из которой отправляются на почту владельцу сайта. Как правило такие формы являются простыми и состоят из двух трех полей для ввода данных. Как же создать такую форму заказа? Здесь потребуется использование языка разметки HTML и языка программирования PHP.
Язык разметки HTML сам по себе несложен, нужно всего лишь разобраться в том как и где ставить те или иные теги. С языком программирования PHP все немного сложнее.
Для программиста создать такую форму не составит труда, а вот HTML верстальщику может показаться сложным некоторые действия.
Создаем форму отправки данных в html
На этом этапе нужно создать файл form.php, в него добавить html код формы. Подробности о каждом элементе формы читайте в статье Как сделать форму в HTML для сайта.
Первая строка будет следующей
Теперь соберем все вместе.
Теперь сделаем так, чтобы поля в форме стали обязательными для заполнения. Имеем следующий код:
Создаем файл, принимающий данные из HTML формы
Это будет файл с именем send.php
В файле на первом этапе нужно принять данные из пост массива. Для этого создаем две переменные:
Первая функция преобразует все символы, которые пользователь попытается добавить в форму:
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
Третей функцией мы удалим пробелы с начала и конца строки, если таковые имеются:
$fio = trim($fio);
$email = trim($email);
Проверка данных, передаваемых от HTML формы в файл PHP
Для того, чтобы проверить, работает ли этот код, передаются ли данные можно просто их вывести на экран при помощи функции echo:
Вторая строка здесь нужна для того, чтобы разделить вывод переменных php на разные строки.
Отправляем полученные данные из формы HTML на почту при помощи PHP
Для отправки данных на почту нужно воспользоваться функцией mail в PHP.
mail(«на какой адрес отправить», «тема письма», «Сообщение (тело письма)»,»From: с какого email отправляется письмо \r\n»);
Например, нужно отправить данные на email владельца сайта или менеджера example@mail.ru.
Тема письма должна быть понятной, а сообщение письма должно содержать то, что указал пользователь в HTML форме.
Необходимо добавить условие, которе проверит отправилась ли форма при помощи PHP на указанные адрес электронной почты.
Таким образом программный код файла send.php, который отправит данные HTML формы на почту будет выглядеть следующим образом:
Три строки для проверки, передаются ли данные в файл закомментированы. При необходимости их можно удалить, так как они нужны были только для отладки.
Помещаем HTML и PHP код отправки формы в один файл
В комментариях к этой статье многие задают вопрос о том, как сделать, чтобы и HTML форма и PHP код отправки данных на почту находились в одном файле, а не двух.
Делаем форму обратной связи на сайте
Говорят, что если программист может написать форму обратной связи, он может написать всё.
Форма обратной связи — древнейшее программистское искусство. Тут есть всё: форма с проверкой, приём запроса, обработка, безопасность, хранение и ответ. Это как Hello World, только для самых крутых.
В сегодняшней версии программы — только самые основы этого упражнения. В следующих частях мы прокачаем систему.
Смысл программы в том, что посетитель страницы заполняет нужные поля, пишет текст сообщения и нажимает кнопку «Отправить». На почту владельцу сайта приходит письмо с текстом сообщения и данными о том, кто это сообщение отправил.
Чтобы сделать у себя на сайте такое, нам понадобится:
Сервер для PHP
Для того, чтобы PHP-код исполнялся, нужен какой-то компьютер-исполнитель. Мы называем его сервером — то есть «раздающим». На сервере должна работать программа для PHP, которое отвечает за правильную обработку таких файлов.
Когда мы делали проект «Публикуем свою страницу в интернете», то уже использовали сервер (эту услугу нам предоставила хостинговая компания SpaceWeb). Этот же сервер мы можем использовать для нашей сегодняшней задачи, потому что он тоже умеет работать с PHP-файлами:
Готовим страницу с формой
Возьмём стандартный шаблон страницы и наполним его стилями и кодом для формы.
Пропишем CSS-стили, чтобы наша страница выглядела опрятно. Забежим немного вперёд и используем в стилях разделы input и textarea :
Чтобы сделать форму на странице, мы будем использовать такие теги:
— для ввода имени, почты для связи и темы письма. Они занимают одну строку, нам этого достаточно.
— здесь будут писать само сообщение, поэтому нужно будет сделать это поле побольше и пошире.
Ещё мы воспользуемся тегом
Пишем обработчик формы на PHP
Когда мы заполним и отправим форму на нашей странице, произойдёт следующее:
Логика работы PHP-программы будет такая:
Отправляем PHP-скрипт на сервер
Последнее, что осталось сделать — загрузить файл скрипта на сервер. Для этого сохраним его как post.php и загрузим по адресу mihailmaximov.ru/projects/mail/post.php. Если у вас ещё нет своего сервера, можете использовать этот скрипт для тестирования формы обратной связи.
Как загружать файлы, мы рассказывали в статье про публикацию сайта в Сети, поэтому просто сделаем всё по той инструкции:
Теперь, когда мы обновим HTML-страницу, заполним все поля и нажмём «Отправить», на указанную почту придёт письмо с нашим сообщением. Это значит, что форма работает, а мы с вами сделали очередной полезный проект!
Что дальше
Дальше как обычно — улучшаем.
Форма отправки данных на почту с сайта html и php
Форма обратной связи или форма отправки заявки очень важна для сайта. Полностью рабочий код отправки данных на почту с сайта
Первым делом Вам нужно создать пустой файл с именем send.php и не забывайте о кодировке, которую Вы используете. Удобнее всего использовать Notepad++ для работы с кодом.
В пустой файл send.php вставляете следующий код:
Отлично! Пол дела сделано!
Теперь Вам нужно ставить html код на свой сайт, чтобы форма обратной связи появилась. Вот этот код:
Как видите, форма подключается к файлу send.php. По умолчанию файл send.php нужно поместить в корень Вашего сайта или прописать к нему другой путь.
Эта форма отправки данных полностью рабочая и проверена. В противном случае, нужно смотреть настройки хостинга.
Исходники формы отправки данных на почту с сайта html и php по этой прямой ссылке. Скачивайте и пользуйтесь на здоровье. Не забудьте изменить данные на свои!
Внимание!
У кого есть проблема с кодировкой (приходят кракозябры) в KOI8-R в почтовом клиенте Outlook, смотрите новую версию формы отправки писем на почту с решенной проблемой с кодировкой! Ну и вообще, новая версия более улучшенная!
Всем удачи и добра!
Макс Пуля
Приветствую! Присоединяйтесь к сообществу Epic Blog и выражайте свои мысли.
Последнее от Макс Пуля
Похожие материалы (по тегу)
20 комментарии
Добавляете новую переменную из html, например address (адрес), получится так:
Ну и, конечно, нужно не забыть добавить в html код:
Ваш адрес: input type=»text» name=»address»
Если я добавлю новые поля в форму ХТМЛ, как их правильно прописать в PHP
Не идут сообщения, уважаемый автор. Пробовал почты и яндекс и gmail. Пишет, что сообщение отправлено, что всем спасибо, однако, сообщения не идут
PHP форма обратной связи с отправкой на email
Вы когда-нибудь хотели установить на свой сайт форму обратной связи? Наверняка Вы встречались с подобными скриптами. Как ни странно, готовые скрипты отправки формы на email пользуются большой популярностью (Вы можете убедиться в этом в любом архиве скриптов), причем их существует великое множество. Есть простые, в которых ничего не меняется, а есть сложные и большие системы, которые функционируют на mysql, позволяют динамически изменять любые поля, содержат кучу настроек… Но так ли они нужны? На мой взгляд необходимость в подобных системах очень сомнительна.
Тестировать отправку почты на домашнем компьютере не получиться. Для этого Вам необходим хостинг с поддержкой php и функциями отправки почты. Я рекомендую Вам хостинг-провайдера runweb.ru. Этот провайдер предлагает отличные тарифы, высочайшую скорость доступа и отличное обслуживание.
Методы отправки почты
Отправлять почту с сервера с помощью php можно двумя основными способами.
Я хочу рассмотреть оба этих способа по порядку.
Первый и самый простой — это использование php функции mail(). Функция очень простая и понятная, хотя отправка почты с использованием mail() имеет и ряд недостатков. Самый главный — письмо отправляется не напрямую, а через php. Одновременно программа php подставляет в письмо некоторые свои поля. Например, у Вас не получится корректно указать отправителя. В поле «from» (то есть от кого пришло письмо) в большинстве случаев будет стоять имя сервера. Все дело в том, что php подставляет свои заголовки в служебную строку письмо «from».
Тем не менее отправка почты с помощью функции mail() остается самым простым
способом отправить письмо с сервера. Давайте рассмотрим этот способ подробнее.
Функция mail() имеет следующий синтаксис:
Вот полный пример отправки почты с помощью mail():
Обратите внимание, что при использовании этой функции на домашнем компьютере она может выдавать ошибку, так как не может отправить письмо без почтового сервера.
Теперь давайте посмотрим, как можно отправить письмо с помощью sendmail.
sendmail — это стандартная программа операционной системы unix, которая отправляет почту.
php может запускать unix-программы путем использования средства pipes (дословно «трубопроводы»). Это средство unix позволяет направлять данные из одной программы в другую, наподобие того, как мы пишем в файл. Только файлом в этом случае выступает программа (в частности, sendmail), которая и получает данные.
sendmail программа имеет множество параметров, мы будем использовать некоторые из них. Чтобы использовать sendmail, нужно открыть к нему поток (pipe). В php это делается использованием команды popen(), которая по синтаксису идентична команде fopen(). Путем использования popen() мы открывает поток к sendmail
для записи в него (помните, параметр режима «w»?), после чего можно отправлять в него данные обычной командой fputs(). Посмотрим, как полностью выглядит процедура отправки письма через sendmail:
Теперь давайте рассмотрим пример использования возможностей отправки почты. Для этого мы сделаем форму обратной связи, которую Вы сможете установить на свой сайт. В качестве метода отправки письма мы будем использовать sendmail.
Создаем форму обратной связи
Наша форма обратной связи будет представлять собой один скрипт. Этот скрипт будет выводить форму и отправлять письмо.
Теперь, если все правильно, мы описываем необходимые переменные и rfc заголовки письма, после чего отправляем сообщение через sendmail и выводим сообщение о результате (отправлено/не отправлено). Здесь все просто и понятно из предыдущих примеров.
Собственно это и все, что необходимо, чтобы сделать форму обратной связи на Вашем сайте 🙂
Как видите, ничего сложного нет и программа получается довольно маленькая.