Обнаружение ошибки PHP Mailer и печать сообщения на веб-сайте с помощью jquery

Я использую PhpMailer для отправки писем. Внутри моего собственного скрипта я хочу проанализировать некоторые javascript внутри оператора if. Обратите внимание, что html включен.

Когда сообщение не отправлено, я хочу проанализировать некоторый javascript внутри функции .done, чтобы письмо не было отправлено. например complete.html("Message Not Sent!"); Когда отправляется электронное письмо, я хочу показать, что письмо отправлено. Как я могу это сделать и где лучше сделать это, внутри php-файла или внутри javascript?

  var form = $('#contact'); form.submit(function(event) { event.preventDefault(); var complete = $('#formAppend'); var $form = $(this); var name = $("#fname").val(); var email = $("#email").val(); var Message = $("#msg").val(); var countryoption = $("#country").val(); $.ajax({ type: 'POST', url: '../sendemail.php', data: { Name: name, Email: email, message: Message, Country: countryoption }, beforeSend: function() { complete.html('Message is Sending...').fadeIn(); } }) .done(function(data) { //This should change depending on the php if statement at the bottom. complete.html("Message Sent"); }); }); //end contact form 
 <form id="contact" method="post" action="#ss"> <div id="formAppend"></div> <input type="text" id="fname" name="firstname" placeholder="Το όνομα σας.." required> <input type="email" id="email" name="email" placeholder="Το email σας.." required> <select id="country" required> <option class="w3-center" value="" disabled selected value>-- Χώρα --</option> <option value="Κυπρος">Κύπρος</option> <option value="Ελλάδα">Ελλάδα</option> <option value="Άλλο">Άλλη</option> </select> <textarea id="msg" name="message" placeholder="Γράψε το μήνυμα.." style="height:200px;max-height:400px;min-height:100px;" required></textarea> <div id="op"> <button type="submit" style="" class="btn btn-primary img-responsive"> Αποστολή</button> </div> </form> 

PHP:

 <?php require 'PHPMailer-master/PHPMailerAutoload.php'; if(empty($_POST['Email'])){ $_POST['Email']= ""; } if(empty($_POST['Name'])){ $_POST['Name']= ""; } if(empty($_POST['message'])){ $_POST['message']= ""; } if (isset($_POST["message"]) && !empty($_POST["message"])) { $mymail=smtpmailer("webdominar1@gmail.com",$_POST['Email'], $_POST['Name'], $_POST['message']); }else{ header('Location: http://webdominar.xyz'); exit(); } function smtpmailer($to, $from, $from_name, $body) { $mail = new PHPMailer; $mail->isSMTP(); $mail->Debugoutput = 'html'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = ''; $mail->Password = ''; $mail->SetFrom($from, $from_name); $mail->Subject = "Εμβολιασμός Δέντρων ~ Φόρμα Επικοινωνίας ~ $body "; $mail->CharSet = 'UTF-8'; $mail->isHTML(true); // Set email format to HTML $Country = $_POST["Country"]; $mail->Body = "BLABLA ";//end email body $mail->AddAddress($to); //send the message, check for errors if (!$mail->send()) { //Message not sent echo "Mailer Error: " . $mail->ErrorInfo; } else {//Message sent! echo "Well done $from_name, your message has been sent!\nWe will reply to the following email: $from" . "<br>Your Message: $body"; } } //end function smtpmailer ?> 

Измените код PHP и JS, как это ……..

 require 'PHPMailer-master/PHPMailerAutoload.php'; if (empty($_POST['Email'])) { $_POST['Email'] = ""; } if (empty($_POST['Name'])) { $_POST['Name'] = ""; } if (empty($_POST['message'])) { $_POST['message'] = ""; } if (isset($_POST["message"]) && !empty($_POST["message"])) { $mymail = smtpmailer("webdominar1@gmail.com", $_POST['Email'], $_POST['Name'], $_POST['message']); } else { header('Location: http://webdominar.xyz'); exit(); } function smtpmailer($to, $from, $from_name, $body) { $mail = new PHPMailer; $mail->isSMTP(); $mail->Debugoutput = 'html'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = ''; $mail->Password = ''; $mail->SetFrom($from, $from_name); $mail->Subject = "Εμβολιασμός Δέντρων ~ Φόρμα Επικοινωνίας ~ $body "; $mail->CharSet = 'UTF-8'; $mail->isHTML(true); // Set email format to HTML $Country = $_POST["Country"]; $mail->Body = "BLABLA "; //end email body $mail->AddAddress($to); //send the message, check for errors if (!$mail->send()) { //Message not sent //echo "Mailer Error: " . $mail->ErrorInfo; $responce = array( 'message' => $mail->ErrorInfo, 'success' => FALSE, ); echo json_encode($responce); } else {//Message sent! $msg = "Well done $from_name, your message has been sent!\nWe will reply to the following email: $from" . "<br>Your Message: $body"; $responce = array( 'message' => $msg, 'success' => TRUE, ); echo json_encode($responce); } } 

Измените свой JS-код следующим образом:

 var form = $('#contact'); form.submit(function(event) { event.preventDefault(); var complete = $('#formAppend'); var $form = $(this); var name = $("#fname").val(); var email = $("#email").val(); var Message = $("#msg").val(); var countryoption = $("#country").val(); $.ajax({ type: 'POST', url: '../sendemail.php', data: { Name: name, Email: email, message: Message, Country: countryoption }, beforeSend: function() { complete.html('Message is Sending...').fadeIn(); } }) .done(function(data) { var response=JSON.parse(data); if(response.success == true) { //return true complete.html("Message Sent"); // if you want show Response message which get form sendemail.php complete.html(data.message); } else { //return false complete.html("Message Not Sent!"); // if you want show Response message which get form sendemail.php complete.html(data.message) } //This should change depending on the php if statement at the bottom. }); }); //end contact form 

Измените конец своего PHP на:

 header("Content-type:application/json"); $message = "Well done ".$from_name.", your message has been sent!<br/>We will reply to the following email:".$from."<br>Your Message: ".$body; if (!$mail->send()) { echo '{"error":"'.$mail->ErrorInfo.'"}'; } else { echo '{"success":"'.json_encode($message).'"}'; } 

Затем вы можете сделать это в .done :

 .done(function(data) { if (data.error) { complete.html(data.error).addClass("error"); } else complete.html(JSON.parse(data.success)); } });