在php中发送邮件时,警报不起作用

问题描述

| 我已经开发了一个简单的PHP应用程序。该应用程序包含一个html文件一个PHP文件。我正在做的是当用户选择两个日期并输入他/她的电子邮件地址时,我正在调用我的PHP文件,该文件会将邮件发送到输入的电子邮件ID。 它正确发送邮件。但是问题是它没有向我显示是否发送邮件的状态。我正在使用警报。 这是我的html文件
<html>
<link rel=\"stylesheet\" href=\"ui.all.css\" type=\"text/css\" media=\"screen\" />
</head>
<body>
        <label>Leave Application</label><br/>
    From <input id=\"date\" type=\"text\"  name=\"ndate\" /><div id=\"d1\"></div><br/>
        To <input id=\"date1\" type=\"text\"  name=\"ndate1\" /><div id=\"d2\"></div><br/>
        Email To <input type=\"text\" id=\"UserEmail\" name=\"userEmail\" onkeyup=\"\"/><br/>
        <input type=\"submit\" id=\"btn_submit\" value=\"Send\" onclick=\"\" />


    <span id=\"d\"></span>

    <script type=\"text/javascript\" src=\"jquery-1.3.2.min.js\"></script>
    <script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js\"></script>


        <script type=\"text/javascript\">
        $(document).ready(function(){
                $(\"#date\").datepicker({ showOn: \'button\',buttonImageOnly: true,buttonImage: \'Images/icon_cal.png\' });
                        $(\"#date1\").datepicker({ showOn: \'button\',buttonImage: \'Images/icon_cal.png\' });
        });

                 $(\"#btn_submit\").click(function(event){

                     var hasError = false;
                        var dt1=$(\"#date\").val();
                     var dt2=$(\"#date1\").val();
                     var em=$(\"#UserEmail\").val();
                     $(\".error\").hide();

                      if(dt1 == \'\')
                          {
                            $(\"#d1\").before(\'<span class=\"error\"><font color=\"red\">This Field Must not be empty.</font></span>\');
                            hasError = true;
                           }

                        if(dt2 == \'\')
                        {
                            $(\"#d2\").before(\'<span class=\"error\"><font color=\"red\">This Field Must not be empty.</font></span>\');
                            hasError = true;
                        }

                        var emailReg = /^([\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4})?$/;

                        var emailaddressVal = $(\"#UserEmail\").val();

                        if(emailaddressVal == \'\') {
                            $(\"#UserEmail\").after(\'<span class=\"error\"><font color=\"red\">Please enter your email address.</font></span>\');
                            hasError = true;
                        }
                        else if(!emailReg.test(emailaddressVal)) {
                            $(\"#UserEmail\").after(\'<span class=\"error\"><font color=\"red\">Enter a valid email address.</font></span>\');
                            hasError = true;
                        }
                        if(hasError == true) { return false; }

                    jQuery.ajax({
                        type: \"GET\",url: \"http://www.myserver.com/sent_mail.PHP\",async: false,data: \"dt1=\"+dt1+\"&dt2=\"+dt2+\"&email=\"+em,success: function(msg){
                            alert(msg);
                        }
                    });                    
                 });

    </script>
</body>
</html>
这是我的PHP文件
   <?PHP
`extract($_GET);`

        $msg=\"Respected Sir,\\n\\n\\tI will not be able to come to office from \".$dt1.\" to \".$dt2.\". Please grant my leave\";

        $pcto=$email;
        $pcsubject = \'Leave Application\';
        $pcmessage = $msg;
        $pcheaders = \'From:[email protected]\'.\"\\r\\n\" .
                     \'Reply-To: [email protected]\'.\"\\r\\n\" .
                     \'X-Mailer: PHP/\' . PHPversion();

        $isdone=mail($pcto,$pcsubject,$pcmessage,$pcheaders);

        if($isdone)
            echo \"Mail Sent\";
        else
            echo \"Please Try Again\";
?>
    

解决方法

        您确定脚本返回正确的HTTP状态(因此实际上调用了
success
函数)吗?尝试添加
error: function(){
    alert(\'Error\');
}
到ajax对象以查找(或使用FireBug)。     ,        我会这样写if语句
if(mail($pcto,$pcsubject,$pcmessage,$pcheaders)):
    echo \"Mail Sent\";
else:
    echo \"Please Try Again\";
endif;
无论如何,您是否尝试仅在该文件中回显某些内容? 只需在文件顶部添加这样的内容
echo \"this is returning somethin\";
exit;
查看是否返回此值,如果不是,则问题出在ajax请求中。 另外,我会使用Firebug,所以请执行以下操作(请确保已打开并启用了Firebug控制台),而不是发出警报。
console.log(msg);
    ,        现在不知道相同的代码正在为我运行...