PHPMAILER Не отправляет и не дает ошибку

Я пытаюсь позволить пользователям заполнить контактную форму, которая затем будет отправлена ​​на мой адрес электронной почты. Но он почему-то не работает. Я просто получаю пустую страницу без сообщения об ошибке, иначе текст и адрес электронной почты также не отправляются.

if (isset($_POST['submit'])) { include_once('class.phpmailer.php'); $name = strip_tags($_POST['full_name']); $email = strip_tags ($_POST['email']); $msg = strip_tags ($_POST['description']); $subject = "Contact Form from DigitDevs Website"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "mail.example.com"; // SMTP server example //$mail->SMTPDebug = 1; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 26; // set the SMTP port for the GMAIL server $mail->Username = "info@example.com"; // SMTP account username example $mail->Password = "password"; // SMTP account password example $mail->From = $email; $mail->FromName = $name; $mail->AddAddress('info@example.com', 'Information'); $mail->AddReplyTo($email, 'Wale'); $mail->IsHTML(true); $mail->Subject = $subject; $mail->Body = $msg; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if(!$mail->Send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; exit; } echo 'Message has been sent'; 

Теперь он работает, я не включил файл 'class.smtp.php'. Рабочий код приведен ниже:

  if (isset($_POST['submit'])) { include_once('class.phpmailer.php'); require_once('class.smtp.php'); $name = strip_tags($_POST['full_name']); $email = strip_tags ($_POST['email']); $msg = strip_tags ($_POST['description']); $subject = "Contact Form from DigitDevs Website"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "mail.example.com"; // SMTP server example //$mail->SMTPDebug = 1; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 26; // set the SMTP port for the GMAIL server $mail->Username = "info@example.com"; // SMTP account username example $mail->Password = "password"; // SMTP account password example $mail->From = $email; $mail->FromName = $name; $mail->AddAddress('info@example.com', 'Information'); $mail->AddReplyTo($email, 'Wale'); $mail->IsHTML(true); $mail->Subject = $subject; $mail->Body = $msg; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if(!$mail->Send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; exit; } echo 'Message has been sent'; 

У меня была такая же проблема без сообщения об ошибке даже при включенном SMTPDebug. После поиска рабочих примеров я заметил, что я не включил значение SMTP Secure . Попробуйте добавить эту строку:

 $mail->SMTPSecure = 'ssl'; //secure transfer enabled 

Теперь работайте как очарование.

Вам нужно позвонить:

 $mail = new PHPMailer(true); // with true in the parenthesis 

Из документации:

true параметр означает, что он будет генерировать исключения из ошибок, которые нам нужно поймать.

У меня была аналогичная проблема. В отношении ответа @ Syclone. Я использовал по умолчанию «tls».

$mail->SMTPSecure = 'tls';

После того, как я изменил его на $mail->SMTPSecure = 'ssl'; Это сработало ! Мой почтовый сервер принимал только соединения через SSL.

Использование исключения PHPMailer.

Попробуй это

 try { include_once('class.phpmailer.php'); $name = strip_tags($_POST['full_name']); $email = strip_tags ($_POST['email']); $msg = strip_tags ($_POST['description']); $subject = "Contact Form from DigitDevs Website"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "mail.example.com"; // SMTP server example //$mail->SMTPDebug = 1; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 26; // set the SMTP port for the GMAIL server $mail->Username = "info@example.com"; // SMTP account username example $mail->Password = "password"; // SMTP account password example $mail->From = $email; $mail->FromName = $name; $mail->AddAddress('info@example.com', 'Information'); $mail->AddReplyTo($email, 'Wale'); $mail->IsHTML(true); $mail->Subject = $subject; $mail->Body = $msg; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->Send(); exit; } catch (phpmailerException $e) { echo $e->errorMessage(); //error messages from PHPMailer } catch (Exception $e) { echo $e->getMessage(); } 

Что работало для меня, было установить From от имени пользователя и FromName как $ _POST ['email']

Надеюсь это поможет

Я пытался загрузить отправляемый HTML-файл, который не принадлежал группе www-data на моем сервере Ubuntu.

 chown -R www-data * chgrp -R www-data * 

Задача решена!

Я обсуждал, следует ли писать мой собственный обработчик или PHP-браузер в моем существующем классе. В случае, если это было очень легко из-за универсальности функции spl_autoload_register, которая используется в системе PHPMailer, а также для моей существующей структуры классов.

Я просто создал базовый класс Email в моей существующей структуре классов следующим образом

 <?php /** * Provides link to PHPMailer * * @author Mike Bruce */ class Email { public $_mailer; // Define additional class variables as required by your application public function __construct() { require_once "PHPMail/PHPMailerAutoload.php" ; $this->_mailer = new PHPMailer() ; $this->_mailer->isHTML(true); return $this; } } ?> 

Из вызываемого класса объектов код будет выглядеть следующим образом:

 $email = new Email; $email->_mailer->functionCalls(); // continue with more function calls as required 

Работает с удовольствием и спас меня от повторного изобретения колеса.

У меня была аналогичная проблема, но когда я использовал сервер localhost, он отлично работал

 $mail->isSMTP(); $mail->SMTPDebug = 0; $mail->Host = "localhost"; $mail->Port = "25"; $mail->SMTPSecure = "none"; $mail->SMTPAuth = false; $mail->Username = "#####"; $mail->Password = "####"; 

KeepOnCoding