PHPMailer\\PHPMailer\\Exception类未找到。

4

使用 PHP Mailer 版本 6.0.6

我知道有类似的问题已经被回答了,但我的情况不同。我已经成功地配置了脚本,它一直运行得非常好;我一直在收到邮件,但突然间在没有任何我的操作下,它开始抛出这个错误。

错误信息

    [Sun Nov 25 21:49:37.852920 2018] [:error] [pid 2060:tid 780] [client ::1:59300] 
   PHP Fatal error:  Uncaught Error: Class 'PHPMailer\\PHPMailer\\Exception' not found in   E:\\TCi\\htdocs\\sdresidency\\website\\plugins\\PHPMailer\\PHPMailer.php:1920\nStack trace:\n#0  E:\\TCi\\htdocs\\sdresidency\\website\\plugins\\PHPMailer\\PHPMailer.php(1774): PHPMailer\\PHPMailer\\PHPMailer->smtpConnect(Array)\n#1   E:\\TCi\\htdocs\\sdresidency\\website\\plugins\\PHPMailer\\PHPMailer.php(1516): PHPMailer\\PHPMailer\\PHPMailer->smtpSend('Date: Sun, 25 N...', 'This is a multi...')\n#2 
E:\\TCi\\htdocs\\sdresidency\\website\\plugins\\PHPMailer\\PHPMailer.php(1352): PHPMailer\\PHPMailer\\PHPMailer->postSend()\n#3  
E:\\TCi\\htdocs\\sdresidency\\website\\newbooking.php(38): PHPMailer\\PHPMailer\\PHPMailer->send()\n#4 {main}\n  thrown in 

这是我用来发送邮件的配置

require_once "plugins/PHPMailer/PHPMailer.php";
        require_once "plugins/PHPMailer/SMTP.php";
        $mail = new PHPMailer\PHPMailer\PHPMailer();
    $mail->IsSMTP(); // enable SMTP



    //Enable SMTP debugging. 
    $mail->SMTPDebug = 0;  // debugging: 1 = errors and messages, 2 = messages only                             
    //Set PHPMailer to use SMTP.
    $mail->IsSMTP(); // enable SMTP          
    //Set SMTP host name                          
    $mail->Host = "md-in-30.webhostbox.net";
    //Set this to true if SMTP host requires authentication to send email
    $mail->SMTPAuth = true;                          
    //Provide username and password     
    $mail->Username = "<my mail id>";                 
    $mail->Password = "<my password>";                           
    //If SMTP requires TLS encryption then set it
    $mail->SMTPSecure = "tls";                           
    //Set TCP port to connect to 
    $mail->Port = 587;                                   

    $mail->From = "<my mail id>";
    $mail->FromName = "SD RESIDENCY";
    $mail->addAddress("<receive mail id>", "name");
    $mail->isHTML(true);
    $mail->Subject = "NEW RESERVATION";
    $mail->Body = $message;
    $mail->AltBody = "No HTML Support";

    if(!$mail->send()) 
    {    $_SESSION['message'] = 'SOME ERROR OCCURED, PLEASE TRY AGAIN';} 
    else 
    {    
        $_SESSION['message'] = 'BOOKING COMPLETED SUCCESSFULLY';
        header("Location: " . $_SERVER["HTTP_REFERER"]);

    }

我正在将以HTML格式存储的邮件内容存储在$message变量中。我尝试过这里和其他网站上的所有已回答的问题,但都没有成功;任何帮助都将不胜感激。


你的项目结构是什么样子的?PHPMailer.php 文件在哪里? - Nikola Pavlović
欢迎来到 Stack Overflow!请参观[tour]并阅读[ask]。关于您的问题,您需要提取一个[mcve],因为没有它,您的问题被视为离题。特别是,无法复现有关加载的库和类加载器设置的代码设置方式,这尤其糟糕,因为错误可能是由它引起的。 - Ulrich Eckhardt
你可以通过添加require_once 'plugins/PHPMailer/Exception.php';来解决这个问题,但是正如@gbar的回答所说,建议使用文档推荐的composer。 - Synchro
@NikolaPavlović PHPMailer.php 的位置是这样的:<projectfolder>/plugins/PHPMailer/PHPMailer.php - deedee
@UlrichEckhardt 我会尝试的。 - deedee
显示剩余2条评论
1个回答

6
  1. 尝试将 require_once "plugins/PHPMailer/PHPMailer.php"; 替换为

require_once "./plugins/PHPMailer/PHPMailer.php";

  1. 不要直接引入 libs。使用Composer进行自动加载。
    1. 安装 Composer https://getcomposer.org/download/
    2. 通过Composer安装PHP Mailer。在控制台上输入 composer require phpmailer/phpmailer https://packagist.org/packages/phpmailer/phpmailer
    3. 在PHP文件中引入Composer的自动加载程序。 require 'vendor/autoload.php';
    4. 完成。您可以轻松地引入和使用PHP Mailer和其他libs。

我使用了Composer,问题得到了解决。非常感谢在这里支持我的每一个人。 - deedee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接