我已经创建了一个脚本来发送带有ajax请求的电子邮件。发送邮件时,ajax会被执行,但 php邮件功能总是返回false 。所以AJAX if(data ==" fail")一直在执行。任何人都知道为什么会这样?
php脚本:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = strip_tags($_POST['naam']);
$from = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$subject = strip_tags($_POST['onderwerp']);
$message = strip_tags($_POST['bericht']);
$to = 'someMail@gmail.com';
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
if (mail($to, $subject, $message, $headers)){
echo 'success';
}else{
echo 'fail';
}
}
和AJAX:
$(document).ready(function () {
$('#contactKnop').on('click', function (event) {
event.preventDefault();
var naam = $('#naam').val();
var email = $('#email').val();
var bericht = $('#bericht').val();
var onderwerp = $('#onderwerp').val();
$.ajax({
type: 'POST',
url: 'mail.php',
data: {
naam: naam,
email: email,
onderwerp: onderwerp,
bericht: bericht
},
//datatype: 'json',
beforeSend: function () {
$("div#divLoading").addClass('show');
},
complete: function () {
$("div#divLoading").removeClass('show');
},
success: function (data) {
if (data == "success") {
$('.emailformulier').slideUp(500);
$('#emailResultMessage').addClass('alert alert-success')
$('#emailResultMessage').text('We hebben uw bericht goed ontvangen.');
$('#emailResultMessage').show();
setTimeout(function () {
$("#emailResultMessage").slideUp(500)
}, 1000);
setTimeout(function () {
$("#emailResultMessage").text('')
}, 1500);
}
if (data == "fail") {
$('#emailResultMessage').addClass('alert alert-danger')
$('#emailResultMessage').text('Fout bij het versturen van uw bericht, probeer later opnieuw.');
$('#emailResultMessage').show();
}
},
error: function () {
alert('fout bij het versturen van de email');
}
});
});
});