发送php邮件后,ajax会回复错误消息

时间:2017-11-24 21:27:48

标签: php jquery ajax email

我试图通过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;

0 个答案:

没有答案