我试图通过AJAX发送邮件后显示状态按摩。 邮件发送没有问题,但它显示错误一,而不是显示成功消息。 在我看来,json数据应该是有效的。 也许你可以帮助我,关于菲尔曼。
jQuery代码:
$(document).ready(function() {
$('#send_btn').click(function(event) {
event.preventDefault();
$.ajax({
dataType: 'json',
url: $('#contact').attr('action'),
type: "POST",
data: $('#contact').serialize(),
beforeSend: function() {
$('#send_btn').html('sendet...');
},
success: function(response) {
if(response) {
if(response['signal'] == 'ok') {
$('#msg').html('<div class="alert_success">' + response['msg'] + '</div>');
$('input, textarea').val(function() {
return this.defaultValue;
});
} else {
$('#msg').html('<div class="alert_warning">' + response['msg'] + '</div>');
}
}
},
error: function() {
$('#msg').html('<div class="alert_warning">Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut.</div>');
},
complete: function() {
$('#send_btn').html('Abschicken');
},
});
});
});
RequestHandler - 使用SMTP发送邮件:
<?php
// Import PHPMailer classes into the global namespace
use PHPMailer\PHPMailer\PHPMailer;
//Load composer's autoloader
require 'phpmailer/vendor/autoload.php';
//Empfänger E-Mail
$recipient = 'recipient';
//Formularfelder
$vname = trim($_POST['vname']);
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);
if($name != null && $email != null && $message != null) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$mail = new PHPMailer(true);
//Server settings
$mail->isSMTP();
$mail->SMTPDebug = 3;
$mail->Host = 'smtp.1und1.de';
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'passowrd';
$mail->SMTPSecure = 'tls';
$mail->Port = 25;
//Recipients
$mail->setFrom("$recipient", 'recipient');
$mail->addAddress("$recipient", 'recipient');
$mail->addReplyTo($email, $name);
$body = "<p><strong>Name: </strong>$vname $name <br> <strong>Nachricht: </strong>$message</p>";
//Content
$mail->isHTML(true);
$mail->Subject = 'Kontaktformular';
$mail->Body = $body;
$mail->AltBody = strip_tags($body);
if(!$mail->send()){
$signal = 'bad';
$msg = 'Mailer Error: ' . $mail->ErrorInfo;
} else {
$signal = 'ok';
$msg = 'Nachricht versendet, vielen Dank!';
}
} else {
$signal = 'bad';
$msg = 'Ungültige E-Mail-Adresse, bitte versuchen Sie es erneut.';
}
} else {
$signal = 'bad';
$msg = 'Bitte füllen Sie alle erforderlichen Felder aus.';
}
$data = array(
'signal' => $signal,
'msg' => $msg
);
echo json_encode($data);
&GT;