问题加载phpmailer 6.0

时间:2017-01-11 18:29:26

标签: phpmailer

将phpMailer 5.xx升级到6.0时遇到问题。多年来使用了几个版本的phpmailer,没有像这样的问题。我更喜欢不使用作曲家。

从升级指南“或者,如果您没有使用composer,请将PHPMailer文件夹的内容复制到PHP配置中指定的include_path目录之一,并手动加载每个目录。”我更喜欢不修改共享主机上的include_path文件。

我将PHPMailerAutoload.php用于我的5.xx版本

我在6.0包中使用了这个: “从PHPMailer 5.2升级到6.0 如果您不使用composer,您仍然可以手动加载类,具体取决于您使用的是什么:

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

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

没有报道这些

的错误
$mail = new PHPMailer(true);
  

致命错误:未捕获错误:在我的代码的///路径中找不到类'PHPMailer'

尝试过$ mail = new \ PHPMailer(true);

尝试了PHPMailer.php和SMTP.php的小写文件名

尝试过class.PHPMailer.php和class.SMTP.php;并使用小写文件名

1 个答案:

答案 0 :(得分:0)

查看the examples以获取参考 - 您需要use命名空间类或绝对引用它,例如:

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

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

正如your github ticket for the same question中所见,use语句仅适用于定义它们的文件(请参阅docs),因此您将拆分为两个文件(您没有最初提一下)打破它。你让他们像这样分开;在第一个文件中:

use PHPMailer\PHPMailer\PHPMailer;
require 'src/PHPMailer.php';

并在第二个文件中:

$mail = new PHPMailer(true);

use语句不适用于第二个文件,因此该类确实未定义,尽管require仍然有效,因为它们是全局的。你需要像这样拆分:

require 'src/PHPMailer.php';

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

有关升级到6.0的详细信息,请阅读the upgrade guide