Ошибка PHPMailer «Пустое тело сообщения» в Gmail - PullRequest
0 голосов
/ 10 июня 2019

Я новичок в PHPMailer, и когда я установил код для отправки электронной почты с PHPMailer, он показывает мне ошибку с:

Ошибка почтовой программы: тело сообщения пусто

Я перепробовал много ссылок из стека, например, это и это , но не смог найти решение.

Ниже мой код

<?php
   // Import PHPMailer classes into the global namespace
   // These must be at the top of your script, not inside a function
   use PHPMailer\PHPMailer\PHPMailer;
   use PHPMailer\PHPMailer\Exception;

   require 'src/Exception.php';
   require 'src/PHPMailer.php';
   require 'src/SMTP.php';

   //Create a new PHPMailer instance
   $mail = new PHPMailer;
   $mail->isSMTP();
   $mail->SMTPDebug = 2;
   $mail->Host = 'abc@test.com';
   $mail->Port = 587;
   $mail->SMTPAuth = true;
   $mail->Username = 'abc@gmail.com';
   $mail->Password = '*****';
   $mail->setFrom('xyz@gmail.com', 'test');
   $mail->addReplyTo('xyz@gmail.com', 'Test');
   $mail->addAddress('example@gmail.com', 'Receiver Name');
   $mail->Subject = 'PHPMailer SMTP message';
   $mail->msgHTML(file_get_contents('message.html'), __DIR__);
   $mail->AltBody = 'This is a plain text message body';
   /*$mail->addAttachment('test.txt');*/
   if (!$mail->send()) {
     echo 'Mailer Error: ' . $mail->ErrorInfo;
   } else {
     echo 'Message sent!';
  }
?>

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 10 июня 2019

При вызове msgHTML() будут установлены как обычные, так и HTML части тела.Если ваш вызов file_get_contents ничего не возвращает, вы получите пустое тело, которое вызовет ошибку, которую вы видите.

Поэтому сначала проверьте этот вызов:

$body = file_get_contents('message.html');
var_dump($body);
$mail->msgHTML($body, __DIR__);

Thisпо-прежнему будет отображаться ошибка, но вы сможете сначала проверить свой контент.Если ваш файл с именем message.html не пустой, проверьте с помощью абсолютного пути (например, с помощью __DIR__ . '/message.html'), а если по-прежнему не удается получить результат, убедитесь, что у пользователя, обращающегося к файлу, достаточно прав для этого.

Обратите внимание, что msgHTML также устанавливает AltBody, поэтому, если вы не хотите специально переопределить это, вам не нужно также устанавливать это.

...