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

Html


Итак, приступаем. В качестве примера рассмотрим самую банальную форму заказа звонка. Форма будет содержать всего два поля номер и телефон.

Для начала напишем простую форму отправки на HTML:

<form id="form">
    <input type="text" name="name" required="required"/>
    <input type="text" name="phone" required="required"/>
    <input type="submit" value="Заказать звонок"/>
</form>

Для обязательных полей указываем:

required="required"

PHP


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

<?
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){ //Проверка отправилось ли наше поля name и не пустые ли они
        $to = 'mail@yandex.ru'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $subject = 'Обратный звонок'; //Загаловок сообщения
        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p>Имя: '.$_POST['name'].'</p>
                        <p>Телефон: '.$_POST['phone'].'</p>                        
                    </body>
                </html>'; //Текст нащего сообщения можно использовать HTML теги
        $headers  = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
        $headers .= "From: Отправитель <from@example.com>\r\n"; //Наименование и почта отправителя
        mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail
}
?>

Ajax


Для того, чтобы наш форма не перезагружала всю страницу, будем использовать Ajax. Для работы нашего скрипта обязательно подключаем jQuert для нашей страницы. Для этого вставляем следующий код в наш html документ:

<script type="text/javascript">
$(document).ready(function(){
    $("#form").submit(function() { //устанавливаем событие отправки для формы с id=form
            var form_data = $(this).serialize(); //собераем все данные из формы
            $.ajax({
            type: "POST", //Метод отправки
            url: "send.php", //путь до php фаила отправителя
            data: form_data,
            success: function() {
                   //код в этом блоке выполняется при успешной отправке сообщения
                   alert("Ваше сообщение отпрвлено!");
            });
    });
});    
</script>

На этом всё.

Вывод


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

Комментарии (12)


  1. staticlab
    03.02.2019 23:57
    +9

    Шёл 2019 год...


  1. padlyuck
    04.02.2019 00:24
    +11

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


  1. andreymal
    04.02.2019 01:35
    +1

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


    1. Moskus
      04.02.2019 03:55

      Смотря какая задача ставилась и какой результат ожидался. Потому что отрицательный результат, как результат эксперимента — тоже результат, означающий, например, что повторять такое — бессмысленно.


  1. Samouvazhektra
    04.02.2019 01:42
    +1

    Сначала подумала, что у хабра глюк и он выдал пост из ранних 00-х.
    А вообще даже любопытно, что мотивирует автора писать такое на хабр… ведь если автор знает хабр, то, надо полагать, хотябы иногда его читает.


    1. Moskus
      04.02.2019 04:03

      Это, вероятно, очередная манифестация представления о том, что последовательность простых действий, скомбинированных определенным образом (как solution в квестах) может гарантировать достижение искомого результата (повышение кармы/рейтинга на Хабре). Раньше это причисляли к «школьным» стереотипам, теперь часто относят к результатам взросления на компьютерных играх с предопределенным сценарием вместо реальных социальных взаимодействий.


  1. serginhold
    04.02.2019 01:50

    Хабр, что ты делаешь? прекрати


  1. Dmitriy_Rudenko
    04.02.2019 02:57

    О, jQuery!


    1. Desprit
      04.02.2019 03:27

      Э, неа, написано Jquert. Не все так просто!


      1. Eugeny1987
        04.02.2019 05:07

        Jquert это новая какая-то библиотека?


  1. index0h
    04.02.2019 03:35
    +1

    Автор, переписывать статьи 15-ти летней давности с косметикой в стиле 'required' — это не тру, вообще.


    if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){

    1. Почитайте про PSR
    2. Почитайте про глобальные перменные и почему их не стоит использовать
    3. Что будет, если я отправлю запрос с данными

    name[]=&phone[]=


    1. Temmokan
      04.02.2019 07:20

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

      И так далее.