我收到错误: PHPMailer中未找到类'PHPMailer'
我知道答案可能就在那里,但对于我的代码,我似乎无法解决这个问题。
我有一个.php文件,我在其中创建了一个名为Email的类,然后是一个名为sendEmail的函数。在这个函数里面有PHPMailer文件和代码来发送电子邮件。
我的代码是:
function sendMail($con, $siteName, $siteLogo, $email1, $email2, $email3, $email4, $email5, $title, $message, $buttonText, $buttonLink) {
# Get the variables of the email using the variables inside the function's brackets upon request
error_reporting(E_ALL);
global $gmailEmail;
global $gmailPassword;
global $siteUrl;
require $siteUrl.'PHPMailer/PHPMailer.php';
require $siteUrl.'PHPMailer/SMTP.php';
require $siteUrl.'PHPMailer/Exception.php';
$mail = new PHPMailer;
$body = $this->emailTemplate($con, $siteName, $siteLogo, $email1, $email2, $email3, $email4, $email5, $title, $message, $buttonText, $buttonLink);
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = $gmailEmail;
$mail->Password = $gmailPassword;
$mail->SetFrom("admin@".$siteName, $sitename." Admin");
$mail->AddReplyTo("admin@".$siteName, $sitename." Admin");
$mail->Subject = $title;
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
$emails = array($email1, $email2, $email3, $email4, $email5);
# Foreach email that is not empty, send the email
foreach((array)$emails as $email) {
$mail->AddAddress($email);
if (!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
}
}
但错误在于代码行:$mail = new PHPMailer;
,说类'未找到PHPMailer'
有人说这是用途:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
但每当我包含这些内容时,我都会收到此错误:未找到类'PHPMailer \ PHPMailer \ PHPMailer'
答案 0 :(得分:3)
你不必有作曲家(虽然这是一个好主意),但如果你不这样做,你必须自己加载课程,和你必须将它们导入你的带有use
语句的命名空间。所有这些都包含在PHPMailer提供的自述文件和示例中,所以它并没有完全保密。
在您尝试使用类之前,use
语句必须出现在脚本的顶部,所以问题可能是您将它们放在您的函数中,这将无法正常工作 - 所有这些是标准的PHP语法,没什么不寻常的。
或者,您可以使用完全限定的类名,如下所示:
$mail = new PHPMailer\PHPMailer\PHPMailer;
此外,我可以看到您的代码基于一个非常古老,陈旧的示例。这是一个坏主意 - 总是使用最新的。