无法解决错误PHPmailer
Can't solve error PHPmailer
当我注册并使用我的登录表单帐户时,它应该发送一封确认电子邮件,但它给我这个错误:
Fatal error: Uncaught Error: Class 'SMTP' not found in C:\xampp\htdocs\login\mailer\class.phpmailer.php:1479
Stack trace:
#0 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1562): PHPMailer->getSMTPInstance()
#1 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1499): PHPMailer->smtpConnect(Array)
#2 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1336): PHPMailer->smtpSend('Date: Fri, 3 Ma...', 'This is a multi...')
#3 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1214): PHPMailer->postSend()
#4 C:\xampp\htdocs\login\class.user.php(106): PHPMailer->send()
#5 C:\xampp\htdocs\login\signup.php(43): USER->send_mail('Rainier.laan@ho...', 'Hello Rainier, ...', 'Confirm Registr...')
#6 {main} thrown in C:\xampp\htdocs\login\mailer\class.phpmailer.php on line 1479
我查了一下1479行是这样的:
if (!is_object($this->smtp)) {
$this->smtp = new SMTP;
}
我看不出错误是什么。我对此很陌生。你们能帮帮我吗?
检查您是否已经下载了所有项目文件。 SMTP class 代码被定义到 PHPMailer 项目中,在 this 文件中。
如果您使用 composer 下载 PHPMailer,请确保您有像 require_once 'vendor/autoload.php
这样的行。否则,请在使用 PHPMailer classes.
之前检查是否有类似 require_once 'mailer/PHPMailerAutoload.php
的行
使用 PHPMailer 自己的自动加载器
不久前,PHPMailer 更改了它加载 classes 的方式,以便它与 composer、许多框架和 PHP PSR-0 更加兼容自动加载标准。请注意,因为我们支持 PHP 回到 5.0 版本,所以我们不能支持更新的 PSR-4 标准,也不能使用命名空间。以前,PHPMailer 显式加载 SMTP class,如果您想提供自己的实现,这会导致问题。您可能已经看到旧脚本这样做:
require 'class.phpmailer.php';
如果您只这样做,SMTP 发送将失败并出现 Class 'SMTP' 未找到错误 .您需要明确包含 class.smtp.php 文件(阅读 README 了解您需要哪些文件的信息),或者使用推荐的方法使用 composer 或提供的自动加载器,如下所示:
require 'PHPMailerAutoload.php';
当我注册并使用我的登录表单帐户时,它应该发送一封确认电子邮件,但它给我这个错误:
Fatal error: Uncaught Error: Class 'SMTP' not found in C:\xampp\htdocs\login\mailer\class.phpmailer.php:1479
Stack trace:
#0 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1562): PHPMailer->getSMTPInstance()
#1 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1499): PHPMailer->smtpConnect(Array)
#2 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1336): PHPMailer->smtpSend('Date: Fri, 3 Ma...', 'This is a multi...')
#3 C:\xampp\htdocs\login\mailer\class.phpmailer.php(1214): PHPMailer->postSend()
#4 C:\xampp\htdocs\login\class.user.php(106): PHPMailer->send()
#5 C:\xampp\htdocs\login\signup.php(43): USER->send_mail('Rainier.laan@ho...', 'Hello Rainier, ...', 'Confirm Registr...')
#6 {main} thrown in C:\xampp\htdocs\login\mailer\class.phpmailer.php on line 1479
我查了一下1479行是这样的:
if (!is_object($this->smtp)) {
$this->smtp = new SMTP;
}
我看不出错误是什么。我对此很陌生。你们能帮帮我吗?
检查您是否已经下载了所有项目文件。 SMTP class 代码被定义到 PHPMailer 项目中,在 this 文件中。
如果您使用 composer 下载 PHPMailer,请确保您有像 require_once 'vendor/autoload.php
这样的行。否则,请在使用 PHPMailer classes.
require_once 'mailer/PHPMailerAutoload.php
的行
使用 PHPMailer 自己的自动加载器
不久前,PHPMailer 更改了它加载 classes 的方式,以便它与 composer、许多框架和 PHP PSR-0 更加兼容自动加载标准。请注意,因为我们支持 PHP 回到 5.0 版本,所以我们不能支持更新的 PSR-4 标准,也不能使用命名空间。以前,PHPMailer 显式加载 SMTP class,如果您想提供自己的实现,这会导致问题。您可能已经看到旧脚本这样做:
require 'class.phpmailer.php';
如果您只这样做,SMTP 发送将失败并出现 Class 'SMTP' 未找到错误 .您需要明确包含 class.smtp.php 文件(阅读 README 了解您需要哪些文件的信息),或者使用推荐的方法使用 composer 或提供的自动加载器,如下所示:
require 'PHPMailerAutoload.php';