Ошибка: класс 'PHPMailer' не найден

Ошибка: неустранимая ошибка: необработанная ошибка: класс 'PHPMailer' не найден в C:\xampp\htdocs\php-mailer\index.php:4 Трассировка стека: #0 {main}, брошенный в C: \ xampp \ htdocs \ php- mailer \ index.php в строке 4

Мой код PHP здесь:

require("src/PHPMailer.php");
require("src/Exception.php");
$mail = new PHPMailer();  

$mail->IsSMTP();                                      
$mail->Host = 'smtp.gmail.com'; 
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "gmail id";  // SMTP username
$mail->Password = "mypassword"; // SMTP password

$mail->From = "opensourcesivaprakash@gmail.com";
$mail->FromName = "Mailer";
$mail->AddAddress("siva.sing.sivan@gmail.com", "Josh Adams");
$mail->AddAddress("sp");                  // name is optional
//$mail->AddReplyTo("opensourcesivaprakash@gmail.com", "Information");

$mail->WordWrap = 50;                                 // set word wrap to 50 characters
//$mail->AddAttachment("/var/tmp/file.tar.gz");         // add attachments
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");    // optional name
$mail->IsHTML(true);                                  // set email format to HTML

$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body in bold!";
$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";

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

1 ответ

Решение

Это потому, что вы не рассматривали пространство имен PHPMailer. Сделайте одну из этих двух вещей:

Измените ваш экземпляр, чтобы использовать полное имя класса (FQCN):

$mail = new PHPMailer\PHPMailer\PHPMailer();

В качестве альтернативы, определите импорт в верхней части вашего файла, прежде чем загружать классы:

use PHPMailer\PHPMailer\PHPMailer;

Это позволит вашим существующим new PHPMailer линия на работу.

Все примеры, предоставляемые с PHPMailer, используют последний подход, и он также описан в руководстве по устранению неполадок.

Скопируйте файлы в src\ папку и используйте в коде следующее:

require "src\Exception.php";
require "src\PHPMailer.php";
require "src\SMTP.php";

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

try { 
    //your code
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Другие вопросы по тегам