Javascript 从php文件发送邮件时出错
我对使用php非常陌生,目前正在尝试建立一个个人网站。我在页面底部有一张联系表,我似乎无法开始工作,也无法给自己发送一封客户写的邮件。该表单包含以下html:Javascript 从php文件发送邮件时出错,javascript,php,forms,email,Javascript,Php,Forms,Email,我对使用php非常陌生,目前正在尝试建立一个个人网站。我在页面底部有一张联系表,我似乎无法开始工作,也无法给自己发送一封客户写的邮件。该表单包含以下html: <form method="post"> <div class="form-group"> <label for="name">Your name:</label> <
<form method="post">
<div class="form-group">
<label for="name">Your name:</label>
<input type="text" id="name" class="form-control" placeholder="Your name" />
</div>
<div class="form-group">
<label for="email">Your email:</label>
<input type="email" id="email" class="form-control" placeholder="Your email"/>
</div>
<div class="form-group">
<label for="comment">Message</label>
<textarea class="form-control" id="comment"></textarea>
</div>
<input type="button" class="btn btn-warning" value="submit" id="sendEmail"/>
</form>
你的名字:
您的电子邮件:
消息
我正在使用下面的JavaScript将表单放入一个php文件,并向自己发送一封电子邮件。在JavaScript中:
<script>
$(".contentContainer").css("min-height",$(window).height());
$("result").hide();
$("#sendEmail").click(function(){
var name = $("#name").val();
var email = $("#email").val();
var comment = $("#comment").val();
$.post("validate.php",
{postname:name,postemail:email,postcomment:comment},
function(data){
$("#result").html(data).fadeIn();
});
});
</script>
$(“.contentContainer”).css(“最小高度”,$(窗口).height());
$(“结果”).hide();
$(“#发送电子邮件”)。单击(函数(){
var name=$(“#name”).val();
var email=$(“#email”).val();
var comment=$(“#comment”).val();
$.post(“validate.php”,
{postname:name,postemail:email,postcomment:comment},
功能(数据){
$(“#结果”).html(数据).fadeIn();
});
});
下面是我正在使用的php文件:
<?php
$error = NULL;
if (!$_POST['postname']) {
$error="<br />Please enter your name";
}
if (!$_POST['postemail']) {
$error.="<br />Please enter your email address";
}
if (!$_POST['postcomment']) {
$error.="<br />Please enter a comment";
}
if ($_POST['postemail']!="" AND !filter_var($_POST['postemail'], FILTER_VALIDATE_EMAIL)) {
$error.="<br />Please enter a valid email address";
}
if($error !=NULL){
$result='<div class="alert alert-danger"><strong>There were error(s)
in your form:</strong>'.$error.'</div>';
} else{
if (mail("PERSONAL EMAIL", "Comment from website", "Name: ".$_POST['postname ']."
Email: ".$_POST['postemail']."
Comment: ".$_POST['postcomment'])) {
//echo $_POST['postname']
$result='thank you!';
} else{
$result='There was an error sending your message! Try again later!';
}
}
?>
首先,您必须在jQuery代码中编写一个preventDefault()
语句,以参与单击按钮sendmail,否则,脚本将生成一个表单submit
使用jQuery在客户端验证电子邮件等是一种很好的做法
另一个好的做法是确保在PHP中使用isset($\u POST['name'])
对$\u POST
变量上的正确值进行索引 首先,当邮件函数返回TRUE时,它只表示邮件已被接受发送。这并不意味着它已经或将要被传递,甚至是从服务器发送出去。
我还会检查垃圾邮件文件夹,因为这种从php脚本发送邮件的方法通常会让您陷入垃圾邮件。它只是不使用SMTP和RealBox发送邮件
我建议使用PHPMailer通过真实邮箱发送消息。它还为您提供了一些有关发送电子邮件时出错的信息
第二个问题是您不回显$result。这就是它没有发送到JS的原因。您在电子邮件行中有一个语法错误:您应该更改
和的&&
。您应该使用$(“#formId”).serialize()
作为数据值,而不是使用硬编码的post数据。使用type=“button”输入不应提交表单。A可以这样做(如果它没有type=“button”)。在这种情况下,可以。与与&&之间的区别在于&&的优先级高于=但与否。所以$a=$b&&$c与$a=$b和$c不同,后者就像($a=$b)&&$c。