所以我有一个简单联系表格的网站,我希望通过电子邮件收到该消息。
我创建了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