php 8.5需借助phpmailer实现smtp邮件发送,须启用openssl扩展、配置tls/ssl加密及邮箱授权码,并通过composer安装phpmailer 6.9+版本进行安全可靠发送。

PHP 8.5 本身不内置 SMTP 发送能力,它依赖外部配置或第三方库来实现可靠邮件发送。直接修改 php.ini 并启用 mail() 函数在现代环境中已基本不可用——多数云服务器屏蔽 25 端口,且缺乏认证与加密支持。真正可行、推荐的方式是使用 PHPMailer(兼容 PHP 8.5)直连 SMTP 服务,并正确配置 TLS/SSL 加密和身份验证。
确认 PHP 环境基础支持
PHP 8.5 默认已启用 OpenSSL 扩展(用于 TLS/SSL 连接),但仍建议检查:
- 运行
php -m | grep openssl,确认输出含openssl - 若无输出,在
php.ini中取消注释extension=openssl(Linux)或extension=php_openssl.dll(Windows) - 无需重启 CLI 模式,但 Web 服务(如 Apache/Nginx + PHP-FPM)需重启才能生效
用 Composer 安装并初始化 PHPMailer
PHP 8.5 兼容 PHPMailer 6.9+(最新稳定版),推荐通过 Composer 管理:
- 执行
composer require phpmailer/phpmailer - 在脚本中引入:
require 'vendor/autoload.php'; - 实例化时启用异常模式:
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
配置主流邮箱的 SMTP 参数(以 QQ 邮箱为例)
注意:必须在邮箱设置中开启「POP3/IMAP/SMTP 服务」,并生成授权码(非登录密码):
-
Host:
smtp.qq.com -
Port:
465(对应 SSL)或587(对应 TLS) -
SMTPSecure:
PHPMailer::ENCRYPTION_SMTPS(465) 或PHPMailer::ENCRYPTION_STARTTLS(587) -
Username: 完整邮箱地址,如
user@qq.com - Password: 邮箱后台生成的授权码(16位,区分大小写)
-
CharSet: 设为
UTF-8防止中文乱码
编写可运行的发送代码
以下是最小可用示例(含错误捕获):
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.qq.com';
$mail->SMTPAuth = true;
$mail->Username = 'your@qq.com';
$mail->Password = 'your_authorization_code';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->setFrom('your@qq.com', '网站系统');
$mail->addAddress('to@example.com', '收件人');
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->Subject = 'PHP 8.5 邮件测试';
$mail->Body = '<h2>这是一封来自 PHP 8.5 的 HTML 邮件</h2>';
$mail->AltBody = '纯文本备用内容';
$mail->send();
echo '✅ 邮件已发出';
} catch (Exception $e) {
echo "❌ 发送失败: {$mail->ErrorInfo}";
}
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











