【问题标题】:PHP mail() with AJAX带有 AJAX 的 PHP 邮件()
【发布时间】:2018-10-15 12:55:27
【问题描述】:

我在使用 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;
});

邮件.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);
}
?>

【问题讨论】:

  • 我认为Ajax的Php的mail()没有什么影响。
  • 首先,msg_text 应该是 message。你应该使用错误报告,你会得到未定义的索引通知。您的第二个 $subject = 覆盖了第一个作业,您可能是指 $subject .=return false 因为您不希望表单实际提交; AJAX 已经这样做了。我想你也可以使用preventdefault

标签: javascript php ajax email


【解决方案1】:

根据你的问题-

**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代码后,电子邮件将正常工作,因为您在&lt;form&gt;标签和input type="submit"中使用action="mail.php",因此它直接提交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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    相关资源
    最近更新 更多