将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;并使用小写文件名
答案 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。