跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Laravel框架邮件怎么发送_Laravel框架邮件驱动设置方法【教程】

Laravel 9+邮件发送失败的首要原因是未配置MAIL_MAILER=smtp,因默认使用log驱动,其余SMTP参数无效;必须明确定义MAIL_MAILER、匹配加密方式与端口、使用应用专用密码,并放行服务器出站端口。 不配
MAIL_MAILER=smtp
,其他全白搭——Laravel 9+ 默认用
log
驱动,根本不会连 SMTP 服务器。 为什么改了
MAIL_HOST
和
MAIL_PORT
还是发不出邮件 最常见原因是漏设或误设
MAIL_MAILER
。Laravel 8 起废弃
MAIL_DRIVER
,只认
MAIL_MAILER
;9+ 版本默认值是
log
,哪怕你填了一堆 SMTP 参数,只要没显式写
MAIL_MAILER=smtp
,就只会把邮件内容记进日志,不发。
MAIL_MAILER
必须在
.env
里明确定义,且不能被注释、不能有前后空格 升级项目时容易残留旧的
MAIL_DRIVER=smtp
,它已被忽略,得删掉 本地开发常手动设成
log
调试,上线前务必检查是否已切回
smtp
执行
php artisan config:clear
后再测试,缓存不清理,
.env
改了也无效
MAIL_ENCRYPTION
和
MAIL_PORT
必须严格匹配 加密方式和端口错配会导致连接直接被拒绝,错误往往表现为超时或 “Connection refused”,而不是明确的认证失败。 Gmail:用
tls
+
587
,或
ssl
+
465
;不能
tls
+
465
QQ 邮箱:
ssl
+
465
更稳,
tls
+
587
有时被拦截 163/126 邮箱:
ssl
+
465
是主流,
null
+
25
在多数云服务器上被封禁 如果用
ssl
,
MAIL_ENCRYPTION
值必须是
ssl
(小写),不是
SSL
或
"ssl"
用 Gmail / QQ 邮箱时,密码不是登录密码 直接填邮箱登录密码必失败。Gmail 要用「应用专用密码」,QQ 邮箱要用「SMTP 授权码」,两者都需单独开启并生成。 Laravel 13.2.0 PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。 下载 Gmail:必须开启两步验证,然后在账户安全页生成「应用专用密码」,16 位,复制粘贴到
MAIL_PASSWORD
QQ 邮箱:设置 → 账户 → 「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务」→ 开启 SMTP → 获取授权码 163 邮箱:设置 → POP3/SMTP/IMAP → 开启 SMTP → 「客户端授权密码」里设置并记录 授权码/应用密码一旦生成,就不能再查看,只能重置;建议存在密码管理器里,别只存
.env
发邮件前必须确认服务器出站端口放行 很多新手调通配置后仍失败,卡在防火墙或云厂商安全组——不是代码问题,是网络策略拦住了。 检查服务器本地防火墙:
sudo ufw status
(Ubuntu)或
sudo firewall-cmd --list-all
(CentOS) 检查云服务商控制台的安全组规则:确保出方向(egress)允许
465
或
587
端口访问任意 IP(0.0.0.0/0) 部分阿里云/腾讯云轻量应用服务器默认屏蔽 25 端口,465/587 也可能被限,需主动申请解封 本地开发用 Homestead/Valet 一般没问题;Docker 环境要注意容器网络是否透传主机防火墙策略 真正卡点往往不在代码里,而在
.env
第一行、邮箱后台的授权开关、以及云控制台那个被忽略的安全组规则——三者缺一不可。

相关文章