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

时间:2011-03-25 11:42:29

标签: jquery 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', buttonImageOnly: true, 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:abc@abc.com'."\r\n" .
                     'Reply-To: abc@abc.com'."\r\n" .
                     'X-Mailer: PHP/' . phpversion();

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

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

3 个答案:

答案 0 :(得分:0)

您确定您的脚本返回正确的HTTP状态(因此实际调用了success函数)吗?尝试添加

error: function(){
    alert('Error');
}

找到ajax对象(或使用FireBug)。

答案 1 :(得分:0)

我会像这样编写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);

答案 2 :(得分:0)

现在不知道相同的代码正在为我运行......