找不到PHPMailer类'PHPMailer'错误

问题描述 投票:-1回答:1

我收到错误:在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'

php email phpmailer
1个回答
3
投票

你不必拥有作曲家(虽然这是一个好主意),但如果你不这样做,你必须自己加载这些类,你必须使用use语句将它们导入你的命名空间。所有这些都包含在PHPMailer提供的自述文件和示例中,所以它并不完全保密。

在你尝试使用类之前,use语句必须出现在脚本的顶部,所以可能问题是你将它们放在你的函数中,这是行不通的 - 所有这些都是标准的PHP语法,没什么不寻常的。

或者,您可以使用完全限定的类名,如下所示:

$mail = new PHPMailer\PHPMailer\PHPMailer;

另外,我可以看到你的代码基于一个非常古老,陈旧的例子。这是一个坏主意 - 总是使用最新的。

© www.soinside.com 2019 - 2024. All rights reserved.