@Shtosh

Как сделать отправку формы на почту без перезагрузки при помощи AJAX?

Добрый день. Готов скинуть на кофе тому, кто решит проблему.

Пытался делать форму с отправкой без перезагрузки по вот этой инструкции: gnatkovsky.com.ua/forma-otpravki-pisma-bez-perezag...
Кнопка отправки исчезает после нажатия, текст не выводится, письмо не присылается.
То, как организовано:
5ed516a6ce1d9497868383.png
5ed516de13c3a847835308.png
Скрипт AJAX подключен к шапке.
HTML код:
<form method="post" action="" id="formMain">
                                                <fieldset>
                                                    <h3>Получите <a class="sad-link">бесплатную</a><br> консультацию </h3>
                                                    <p style="margin-top: -3vh">Хотите увеличить продуктивность диалога <b>в 10 раз</b>?<br> Уделите <b>2 минуты</b>статье в нашем <a style="color:#E6045C;" href="#section5">блоге</a>.</p>
                                                    <input type="text" id="name" required placeholder="Ваше имя" autocomplete="off" name="name"><br>
                                                    <input type="text" id="email" placeholder="Email или телефон" required name="email"><br>
                                                    <p>Вы также можете написать нам в <a style="color: #4A76A8;" href="https://vk.com/id538440693" target="_blank">Вконтакте</a>.</p>
                                                    <div id="messegeResult"><input id="button" style="border:0 none;" class="button2" type="button" value="Стать частью искусства" onclick="AjaxFormRequest('messegeResult', 'formMain', 'zakaz.php')"/></div>
                                                </fieldset>
                                            </form>

Script:
<script type="text/javascript">
                                                function AjaxFormRequest(result_id, formMain, url) {
                                                    jQuery.ajax({
                                                        url: url,
                                                        type: "POST",
                                                        dataType: "html",
                                                        data: jQuery("#" + formMain).serialize(),
                                                        success: function(response) {
                                                            document.getElementById(result_id).innerHTML = response;
                                                        },
                                                        error: function(response) {
                                                            document.getElementById(result_id).innerHTML = "<p>Возникла ошибка при отправке формы. Попробуйте еще раз</p>";
                                                        }
                                                    });

                                                    $(':input', '#formMain')
                                                        .not(':button, :submit, :reset, :hidden')
                                                        .val('')
                                                        .removeAttr('ch<code lang="php">

</code>ecked')
                                                        .removeAttr('selected');
                                                }
                                            </script>


PHP:
<?php
if($_POST)
    {
    $to = "velyaaadumanau@yandex.ru"; //КУДА ОТПРАВЛЯТЬ ПИСЬМО
    $subject = "Заказ консультации"; //ТЕМА
    $message = '<span style="font-weight:bold;color:#ff6600;font-size:18px;"><i>Заказ звонка</i> </span><br><br>
    Имя: <span style="font-weight:bold;color:#339900;">'.$_POST['name'].'</span><br>
    Телефон или Email: <span style="font-weight:bold;color:#339900;"> '.$_POST['email'].'</span>';
    $headers = "Content-type: text/html; charset=UTF-8 \r\n";
    $headers .= "From: <vely.dum@gmail.com>\r\n"; // ОТ КОГО, ПРИДУМАЙТЕ ЯЩИК ИЛИ УКАЖИТЕ ПОЧТУ СВОЕГО САЙТА.
    $result = mail($to, $subject, $message, $headers);
  
    if ($result){
        echo "<p>Сообщение успешно отправлено. Скоро Вам перезвонят</p>";
    }
    }
    ?>
  • Вопрос задан
  • 480 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ой сомневаюсь я, что почтовый сервер Yandex пропустит к себе письмо, присланное НЕ напрямую с почтового сервера GMail-а, поскольку такая отправка письма в путь является чисто поддельно-спамерской.

Для того, что-бы корректно прошло письмо с ящика на GMail-е, вы должны подключаться к серверу GMail с логином/паролям этого ящика, и отправлять письмо перез почтовую систему GMail. Только тогда Yandex его примет как легитимное...

Проще использовать свой почтовый адрес, который просто обязан существовать на вашем WEB-сервере/у вашего хостера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 апр. 2024, в 13:10
400000 руб./за проект
24 апр. 2024, в 13:01
5000 руб./за проект
24 апр. 2024, в 13:00
3000 руб./за проект