从简单的POST请求发送Php邮件,但在使用AJAX时不发送

时间:2014-03-25 19:04:07

标签: javascript php ajax email openshift

所以我有一个简单联系表格的网站,我希望通过电子邮件收到该消息。

我创建了mail.php处理程序:

<?php
    $owner_email = "somebody@somemail.com";
    $headers = 'From:' . $_POST["email"];
    $subject = 'A message from your site visitor ' . $_POST["name"];
    $messageBody = "";

    // some verifications

    try{
        if(!mail($owner_email, $subject, $messageBody, $headers)){
            throw new Exception('mail failed');
        }
        else{
            echo 'mail sent';
        }
    }
    catch(Exception $e){
        echo $e->getMessage() ."\n";
    }
?>

如果我创建一个这样的简单HTML表单:

<form method="post" action="mail.php">

    <label>Name</label>
    <input name="name" placeholder="Type Here">

    <label>Email</label>
    <input name="email" type="email" placeholder="Type Here">

    <label>Message</label>
    <textarea name="message" placeholder="Type Here"></textarea>

    <input id="submit" name="submit" type="submit" value="Submit">

</form>

一切正常,我收到了邮箱中的电子邮件。

如果我在http://mywebsite.com/mail.php从我的浏览器发送POST请求,答案是“已发送邮件”,我会在邮箱中收到该邮件。

但是,当我想使用一些JavaScript动态验证表单字段然后使用Ajax发送POST请求时,我没有收到任何内容。这是我的JavaScript:

mailHandlerURL:'mail.php',

...

// on submit when all validations are OK
$.ajax({
    type: "POST",
    url:_.mailHandlerURL,

    data:{
        name:_.getValFromLabel($('.name',_.form)),
        email:_.getValFromLabel($('.email',_.form)),
        phone:_.getValFromLabel($('.phone',_.form)),
        message:_.getValFromLabel($('.message',_.form)),
        stripHTML:_.stripHTML
    },
    success: function(response){
        console.log(response);
        _.showFu(); // to display to the user that the email has been sent
    }
})  

console.log()显示:“mail sent”,因此正确调用mail.php。

该应用程序托管在OpenShift上并使用PHP 5.4

0 个答案:

没有答案