【发布时间】: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