php - 无法从 PHPMailer 作曲家创建 PHPMailer 对象实例
问题描述
嗨,我目前正在开发一个包含忘记密码系统的项目。我决定使用 PHPMailer 向用户发送重置密码电子邮件,并通过 Composer 安装它,它现在位于供应商文件夹中。但是,在执行示例代码后,PHP 会抛出错误:
Notice: Undefined variable: mail in /opt/lampp/htdocs/capstone-admin/process/loginFunctions.php on line 98
Fatal error: Uncaught Error: Call to a member function isSMTP() on null in /opt/lampp/htdocs/capstone-admin/process/loginFunctions.php:98 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/capstone-admin/process/loginFunctions.php on line 98
这是我在 loginFunctions.php 中的一部分代码:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require __DIR__. '/../vendor/autoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
// More codes ......
?>
我的目录结构是:
更新
我尝试搜索有关错误的常见堆栈溢出问题,甚至浏览 youtube 视频,但到目前为止还没有运气!任何帮助将不胜感激
感谢评论的帮助,但不幸的是到目前为止还没有运气
我提供了一个 imgur 图像,显示了
$mail = new PHPMailer();
发生后的调试屏幕截图:
解决方案
假设它是正确的vendor/autoload.php
(见内联注释):
它读取
new PHPMailer
而不是new PHPMailer()
- 不像上面的代码片段。$mailÂ
看起来也很奇怪,虽然$mail
是未知数。$mail
和之间可能有一些不可见的控制字符=
。如果它倾倒了一些东西,那么很可能var_dump($mailÂ);
如果不是这样,那么...
为了抛出/捕获异常,构造如下:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
// relative vs. absolute path sometimes make a difference.
require __DIR__. '/../vendor/autoload.php';
// require '../vendor/autoload.php';
try {
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
} catch (Exception $e) {
die($e->getMessage());
}
?>
推荐阅读
- java - 如何在列表java中找到匹配字符串的索引?
- powerbi - 从 power bi 服务连接到 azure sql 数据库(或 azure datawarehouse、azure SSAS)
- xamarin - Xamarin.Forms 中的 Facebook 受众网络
- django - 密钥加密,前端后端问题
- facebook - 如何在没有经过审核的 Facebook 应用程序的情况下检索 Instagram 电视 (IGTV) 视频的缩略图?
- flutter - 没有为“Rx”类型定义“fromSnapshot”方法
- python - 从股票筛选器中提取信息
- pic - 读取 Microchip hexfile
- javascript - 我似乎无法获取用户状态
- c# - 我如何使屏幕区域/按钮能够移动播放器?