Javascript 从php文件发送邮件时出错

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> <

我对使用php非常陌生,目前正在尝试建立一个个人网站。我在页面底部有一张联系表,我似乎无法开始工作,也无法给自己发送一封客户写的邮件。该表单包含以下html:

    <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。