当前位置:首页 > PHP教程 > php应用 > 列表

PHP8.5怎么配置邮件发送功能SMTP

发布:smiling 来源: PHP粉丝网  添加日期:2026-10-13 11:17:44 浏览: 评论:0 

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 防止中文乱码

编写可运行的发送代码

以下是最小可用示例(含错误捕获):

  1. use PHPMailer\PHPMailer\PHPMailer; 
  2. use PHPMailer\PHPMailer\SMTP; 
  3.  
  4. require 'vendor/autoload.php'; 
  5.  
  6. $mail = new PHPMailer(true); 
  7. try { 
  8.     $mail->isSMTP(); 
  9.     $mail->Host       = 'smtp.qq.com'; 
  10.     $mail->SMTPAuth   = true; 
  11.     $mail->Username   = 'your@qq.com'; 
  12.     $mail->Password   = 'your_authorization_code'; 
  13.     $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; 
  14.     $mail->Port       = 465; 
  15.  
  16.     $mail->setFrom('your@qq.com', '网站系统'); 
  17.     $mail->addAddress('to@example.com', '收件人'); 
  18.     $mail->isHTML(true); 
  19.     $mail->CharSet = 'UTF-8'; 
  20.     $mail->Subject = 'PHP 8.5 邮件测试'; 
  21.     $mail->Body    = '<h2>这是一封来自 PHP 8.5 的 HTML 邮件</h2>'; 
  22.     $mail->AltBody = '纯文本备用内容'; 
  23.  
  24.     $mail->send(); 
  25.     echo '✅ 邮件已发出'; 
  26. } catch (Exception $e) { 
  27.     echo "❌ 发送失败: {$mail->ErrorInfo}"; 
  28. } 

不复杂但容易忽略.

Tags: PHP8.5怎么配置邮件发送功能

分享到: