Запустите файл php (PHPMailer для отправки электронной почты через gmail) в фоновом режиме и оповещение на той же странице при отправке электронной почты - PullRequest
0 голосов
/ 25 апреля 2020

Я использую PHPMailer для отправки электронной почты из моей учетной записи gmail на электронную почту из отправленной формы в моем индексе. html страница. Это прекрасно работает. Но поскольку я использую файл send. php в действии, после отправки формы появляется страница send. php. Я хочу остаться на странице index. html и разрешить отправку. php работать в фоновом режиме и оповещать на странице index. html, когда отправляется электронное письмо.

ПРИМЕЧАНИЕ. SQL / нет любая работа с базой данных здесь. Я использую PHPMailer в send. php для отправки электронной почты из моего gmail пользователю, отправившему gmail id в форме.

    <form action="send.php" class="form" id="frm-js" method="POST">

            <div class="form__group">
              <input type="text" class="form__input" id="name" name="name" placeholder="Full Name" required>
              <label for="name" class="form__label">Full Name</label>
            </div>
            <div class="form__group">
                <input type="text" class="form__input" id="email" name="email" placeholder="Email Address" required>
                <label for="email" class="form__label">Email Address</label>
            </div>
            <div class="form__group">
              <input type="text" class="form__input" id="phone" name="phone" placeholder="Phone Number">
              <label for="phone" class="form__label">Phone Number</label>
          </div>

            <div class="form__group">
                <textarea id="message" rows="4" cols="50" name="message" class="textarea-frm form__input" maxlength="1000" placeholder="Your message"></textarea>

            </div>
   <div class="form__group">
            <button class="btn" type="submit" name="submit">Book</button>
            </div>

        </form>

Спасибо

1 Ответ

1 голос
/ 25 апреля 2020

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

<form class="form" id="frm-js" method="POST">

    <p id="resp_msg"></p>
    <div class="form__group">
        <input type="text" class="form__input" id="name" name="name" placeholder="Full Name" required>
        <label for="name" class="form__label">Full Name</label>
    </div>
    <div class="form__group">
        <input type="text" class="form__input" id="email" name="email" placeholder="Email Address" required>
        <label for="email" class="form__label">Email Address</label>
    </div>
    <div class="form__group">
        <input type="text" class="form__input" id="phone" name="phone" placeholder="Phone Number">
        <label for="phone" class="form__label">Phone Number</label>
    </div>

    <div class="form__group">
        <textarea id="message" rows="4" cols="50" name="message" class="textarea-frm form__input" maxlength="1000" placeholder="Your message"></textarea>
    </div>
    <div class="form__group">
        <button class="btn" type="submit" name="submit">Book</button>
    </div>

</form>

и добавлю функцию jquery (интегрировать jquery если вы еще не библиотека )

  $("#frm-js").on("submit", function(event){
    event.preventDefault();
    var data = $( this ).serialize();

    $.post("send.php",{data:data }, function (data) {
        //do other stuff like
        //reset form items

        //show message response
        $("#resp_msg").text(data).show();
    });

  });

это отправка. php так и должно быть

if(isset($_POST['data'])) {

    $params = array();
    parse_str($_POST['data'], $params);

    //send mail

    echo "Hi, " . $params['name'] . " your email has sended";
}
...