直接运行 composer require phpmailer/phpmailer 即可,官方包已迁移至此;必须手动引入 vendor/autoload.php 才能使用类;99% 场景需配置 smtp(issmtp()、host、smtpauth、username/password 授权码、smtpsecure);php 8.1+ 调用 setfrom() 需显式传第三个参数 true。

直接运行 composer require phpmailer/phpmailer 就行
PHPMailer 官方包已正式迁移到 phpmailer/phpmailer,不是旧的 phpmailer/phpmailer-bundle 或其他变体。用错包名会导致类找不到、Class 'PHPMailer\PHPMailer\PHPMailer' not found 这类错误。
常见误操作:
- 手敲成
composer require PHPMailer/PHPMailer(大小写敏感,Composer 会报 404) - 加了
--dev却忘了在生产环境重新 install(导致线上发不了邮件) - 没确认项目根目录下有
composer.json(执行前 cd 到对的地方)
安装后必须手动 require autoload.php 才能用
Composer 不会自动加载类——哪怕你用了 require 或 include 引入自己的文件,也得显式加载 Composer 的自动加载器。漏掉这步,new PHPMailer\PHPMailer\PHPMailer() 一定报错。
正确做法:
- 确保
vendor/autoload.php存在(安装成功后就有) - 在你发邮件的脚本最开头加:
require 'vendor/autoload.php'; - 路径要对:如果脚本不在项目根目录,要用相对或绝对路径,比如
require __DIR__ . '/vendor/autoload.php';
PHPMailer 类默认不启用 SMTP 认证,但大多数邮箱都强制要求
直接 new 一个 PHPMailer\PHPMailer\PHPMailer 实例,默认走 mail() 函数——这在本地开发环境基本不可用,线上也常被禁用。99% 的实际场景(Gmail、QQ 邮箱、企业邮箱)必须配 SMTP。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
关键配置不能少:
-
$mail->isSMTP();—— 必须开,否则后面 SMTP 设置全无效 -
$mail->Host = 'smtp.qq.com';—— 注意是 SMTP 地址,不是网页地址 -
$mail->SMTPAuth = true;—— QQ/Gmail 等全部要求 true -
$mail->Username = 'xxx@qq.com'; $mail->Password = 'xxxxxx';—— 密码不是登录密码,是邮箱开启 SMTP 后生成的「授权码」 -
$mail->SMTPSecure = 'ssl';或'tls'—— QQ 用ssl(端口 465),Gmail 常用tls(端口 587)
PHP 8.1+ 下 setFrom() 报 Deprecated 警告?换 setFrom() 的第三个参数
PHPMailer 6.8+ 开始,setFrom($address, $name) 在 PHP 8.1+ 会触发 Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated,根源是没传第三个参数 $auto,内部默认值 null 触发了 PHP 8.1 的严格检查。
安全写法:
- 显式传
true:$mail->setFrom('a@example.com', 'My Site', true); - 或者升级到 PHPMailer ≥ 6.9(已修复),但别盲目升——6.9 移除了对 PHP 7.2 的支持,老项目要注意兼容性
- 别用
addReplyTo()代替setFrom(),它们语义不同,收件人看到的「发件人」还是取决于setFrom()
最常被跳过的其实是 SMTP 授权码和 isSMTP() 这两步,而不是 Composer 命令本身。装完不配 SMTP,等于买了车不加油。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










