использую Mail PHP для отправки почты. Я должен использовать внешний SMTP, поэтому я добавил PHP Mailer.
Проблема в том, что успешное сообщение не возвращается в форму.
Это код
$output = json_encode(array('type'=>'message', 'text' => 'Ciao '.$user_Name .', grazie per averci contattato.'));
die($output);
$mail->Send();
Если я поставил первый отправитель почты, письмо отправляется, но успешное сообщение не отображается.
Если я ставлю первый код json_en, сообщение отображается, но письмо не отправляется
Я также пытался с этим кодом
$output = json_encode(array('type'=>'message', 'text' => 'Ciao '.$user_Name .', grazie per averci contattato.'));
echo($output);
return;
Но это не работает.
обновление
Я попробовал еще раз, но сообщение об успешном завершении не передается (хотя письмо приходит правильно)
Если это поможет, это полный код
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
if($_POST)
{
$to_Email = "mail@mail.it"; //Replace with recipient email address
$subject = 'MB INOX Compilazione form online'; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Input fields are empty!'));
die($output);
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Phone = $_POST["userPhone"];
//$user_Subject = $_POST["userSubject"];
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
//additional php validation
if(strlen($user_Name)<3) // If length is less than 3 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Il nome è troppo corto o vuoto!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Inserire un indirizzo email valido!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Il messaggio è troppo corto o vuoto!'));
die($output);
}
$message_Body = "<strong>Nome: </strong>". $user_Name ."<br>";
$message_Body .= "<strong>Email: </strong>". $user_Email ."<br>";
//$message_Body .= "<strong>Phone: </strong>". $user_Phone ."<br>";
// $message_Body .= "<strong>Subject: </strong>". $user_Subject ."<br>";
$message_Body .= "<strong>Messaggio: </strong>". $user_Message ."<br>";
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2; // 0 = off (for production use) - 1 = client messages - 2 = client and server messages
$mail->Host = "xxxxxxxxx"; // use $mail->Host = gethostbyname('smtp.gmail.com'); // if your network does not support SMTP over IPv6
$mail->Port = 587; // TLS only
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPAuth = true;
$mail->Username = 'xxxxx';
$mail->Password = 'xxxxxxxx';
$mail->setFrom('xxxxxxx', 'MB Inox');
$mail->addAddress($to_Email, 'MB Inox');
$mail->Subject = $subject;
$mail->msgHTML($message_Body); //$mail->msgHTML(file_get_contents('contents.html'), __DIR__); //Read an HTML message body from an external file, convert referenced images to embedded,
$mail->AltBody = 'HTML messaging not supported';
// $mail->addAttachment('images/phpmailer_mini.png'); //Attach an image file
if (!$mail->send()) {
echo 'Mail Not send';
} else {
$output = json_encode(array('type'=>'message', 'text' => 'Ciao '.$user_Name .', grazie per averci contattato.'));
echo($output);
}
}
?>
Это оригинальный код
<?php
if($_POST)
{
$to_Email = "mail@mail.it"; //Replace with recipient email address
$subject = 'MB INOX Compilazione form online'; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Input fields are empty!'));
die($output);
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Phone = $_POST["userPhone"];
//$user_Subject = $_POST["userSubject"];
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
//additional php validation
if(strlen($user_Name)<3) // If length is less than 3 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Il nome è troppo corto o vuoto!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Inserire un indirizzo email valido!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Il messaggio è troppo corto o vuoto!'));
die($output);
}
$message_Body = "<strong>Name: </strong>". $user_Name ."<br>";
$message_Body .= "<strong>Email: </strong>". $user_Email ."<br>";
$message_Body .= "<strong>Phone: </strong>". $user_Phone ."<br>";
// $message_Body .= "<strong>Subject: </strong>". $user_Subject ."<br>";
$message_Body .= "<strong>Message: </strong>". $user_Message ."<br>";
$headers = "From: " . strip_tags($user_Email) . "\r\n";
$headers .= "Reply-To: ". strip_tags($user_Email) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
//proceed with PHP email.
/*$headers = 'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
*/
$sentMail = @mail($to_Email, $subject, $message_Body, $headers);
if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Errore. Messaggio non inviato'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Ciao '.$user_Name .', grazie per averci contattato.'));
die($output);
}
}
?>