PHP mail () с AJAX - PullRequest
       14

PHP mail () с AJAX

0 голосов
/ 15 октября 2018

У меня проблема с использованием mail ().Если быть более точным, когда включен код AJAX - электронное письмо отправляется, но без сообщения (тема и т. Д. Обычно там).

Но когда я удаляю код AJAX, электронное письмо отправляется без проблем.Я не очень разбираюсь в AJAX, я скопировал код js.

Кроме того, кто-нибудь может объяснить, почему в конце js есть «return false»?

HTML

<form name="contactform" method="post" action="mail.php" class="o4">
<table width="450px">
    <tr>
        <td align="right">
        <label for="name" class="pr-3 font-weight-bold tdsm">Name</label>
        </td>
        <td style="font-size:0;">
            <div class="kii nopm">
                <img src="style/contact.svg">
            </div>
            <input type="text" name="name" id="name" maxlength="50" size="30" placeholder="Name" class="imp1">
        </td>
    </tr>
    <tr>
        <td align="right" class="pr-3 font-weight-bold">
        <label for="email" class="tdsm">Email</label>
        </td>
        <td style="font-size:0;">
            <div class="kii nopm">
                <img src="style/email1.svg">
            </div>
            <input type="text" name="email" id="email" maxlength="50" size="30" placeholder="Email" class="imp1">
        </td>
    </tr>
    <tr>
        <td valign="top" align="right" class="pr-3 pt-2 font-weight-bold kni">
            <label for="msg" class="tdsm">Message</label>
        </td>
        <td valign="top">
            <textarea name="msg_text" id="msg" maxlength="1000" cols="25" rows="6" placeholder="Message" class="imp2"></textarea>
        </td>
    </tr>
    <tr>
        <td></td>
        <td style="text-align:left;">
            <input type="submit" name="submit" value="Send" class="submit_contact">
        </td>
    </tr>
    <tr>
        <td></td>
        <td style="text-align:left;">
            <p class="success pt-3">Success!<p>
        </td>
    </tr>
</table>

JQuery

 $(".submit_contact").click(function() {
    var data = {
        name: $("#name").val(),
        email: $("#email").val(),
        message: $("#msg").val()
    };

    $.ajax({
        type: "POST",
        url: "mail.php",
        data: data,
        success: function(){
            $('.success').css("visibility","visible");
        }
    });
    return false;
});

mail.php

<?php
if($_POST){
$to = "contact@mail.com";
$from = $_POST['email'];
$name = $_POST['name'];
$msg = $_POST['msg_text'];

$subject = "Message from" . $from;
$subject = '=?UTF-8?B?'.base64_encode($subject).'?=';

$headers = "Reply-to: contact@mail.com <contact@mail.com>\r\n";
$headers .= "From: contact@mail.com <contact@mail.com>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";

$message = $name . " " ."wrote:" . "\n\n" . $msg;

mail($to,$subject,$message,$headers);
}
?>

1 Ответ

0 голосов
/ 16 октября 2018

По вашему вопросу -

** 1. ** У меня проблема с использованием mail ().Точнее говоря, когда включен код AJAX - электронное письмо отправляется, но без сообщения (тема и т. Д. Обычно там).

var data = {
    name: $("#name").val(),
    email: $("#email").val(),
    message: $("#msg").val()
};

В mail.php используйте $_POST['message'] вместо $_POST['msg_text'];

$to = "contact@mail.com";
$from = $_POST['email'];
$name = $_POST['name'];
$msg = $_POST['message'];

2. Когда я удаляю код AJAX, электронное письмо отправляется без проблем.Я не очень разбираюсь в AJAX, я скопировал js-код.

Да , После удаления AJAX-кода электронная почта будет работать правильно, поскольку вы используете action="mail.php" в теге <form> иinput type="submit", поэтому он напрямую отправляет форму и действие, выполняемое mail.php.поэтому вы должны удалить действие из тега формы и сделать input type="button" вместо input type="submit".

<form name="contactform" method="post" class="o4">
<input type="button" name="submit" value="Send" class="submit_contact">
    </td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...