TP6实现邮件发送需安装think-mail扩展并配置mail.php,使用Mail门面类调用to、subject、text/view等方法发送,注意SMTP授权码、端口与加密方式匹配及邮箱服务开启状态。

ThinkPHP6(TP6)中实现邮件发送功能,核心是配置好邮件驱动并调用内置的 think\facade\Mail 门面类。它默认不内置 SMTP 实现,需借助第三方扩展(如 topthink/think-mail)或直接使用 PHPMailer 等库封装。
安装并启用 think-mail 扩展
这是最轻量、与 TP6 兼容性较好的方式:
- 执行命令安装:
composer require topthink/think-mail - 安装后无需手动注册服务提供者,TP6 会自动识别并加载
- 确保
config/mail.php配置文件存在(若无,可从扩展文档复制默认配置)
配置 mail.php 邮件参数
在 config/mail.php 中填写实际 SMTP 信息,关键项包括:
-
host:邮箱 SMTP 服务器地址(如腾讯企业邮箱为
smtp.exmail.qq.com,163 为smtp.163.com) -
port:端口(通常 465 或 587;465 建议启用
ssl,587 建议启用tls) -
username:发件邮箱完整地址(如
notice@yourdomain.com) - password:SMTP 授权码(非登录密码,需在邮箱后台开启 SMTP 并生成)
-
from:默认发件人信息,含
address和name
在控制器中调用发送方法
使用门面类快速发送文本或 HTML 邮件:
- 基础文本邮件:
Mail::to('user@example.com')->subject('测试标题')->text('这是一封纯文本邮件')->send(); - HTML 邮件(支持模板):
Mail::to('user@example.com')->subject('欢迎注册')->view('email.welcome', ['name' => '张三'])->send();,其中email.welcome对应view/email/welcome.html - 发送失败时会抛出异常,建议用
try/catch捕获并记录日志
常见问题排查要点
发送失败时优先检查以下几项:
- 邮箱是否已开启 SMTP 服务,授权码是否正确(特别注意:不是账号密码)
- 防火墙或云服务器安全组是否放行对应 SMTP 端口(如 465)
- 配置中的
ssl或tls是否与端口匹配(465 → ssl,587 → tls) - 收件地址格式是否合法,
from地址是否与username一致(部分邮箱强制校验)

















