Laravel 9+邮件发送失败的首要原因是未配置MAIL_MAILER=smtp,因默认使用log驱动,其余SMTP参数无效;必须明确定义MAIL_MAILER、匹配加密方式与端口、使用应用专用密码,并放行服务器出站端口。
不配,其他全白搭——Laravel 9+ 默认用驱动,根本不会连 SMTP 服务器。
为什么改了
和
还是发不出邮件
最常见原因是漏设或误设
。Laravel 8 起废弃
,只认
;9+ 版本默认值是
,哪怕你填了一堆 SMTP 参数,只要没显式写
,就只会把邮件内容记进日志,不发。
必须在
里明确定义,且不能被注释、不能有前后空格
升级项目时容易残留旧的
,它已被忽略,得删掉
本地开发常手动设成
调试,上线前务必检查是否已切回
执行
后再测试,缓存不清理,
改了也无效
和
必须严格匹配
加密方式和端口错配会导致连接直接被拒绝,错误往往表现为超时或 “Connection refused”,而不是明确的认证失败。
Gmail:用
+
,或
+
;不能
+
QQ 邮箱:
+
更稳,
+
有时被拦截
163/126 邮箱:
+
是主流,
+
在多数云服务器上被封禁
如果用
,
值必须是
(小写),不是
或
用 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 位,复制粘贴到
QQ 邮箱:设置 → 账户 → 「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务」→ 开启 SMTP → 获取授权码
163 邮箱:设置 → POP3/SMTP/IMAP → 开启 SMTP → 「客户端授权密码」里设置并记录
授权码/应用密码一旦生成,就不能再查看,只能重置;建议存在密码管理器里,别只存
发邮件前必须确认服务器出站端口放行
很多新手调通配置后仍失败,卡在防火墙或云厂商安全组——不是代码问题,是网络策略拦住了。
检查服务器本地防火墙:
(Ubuntu)或
(CentOS)
检查云服务商控制台的安全组规则:确保出方向(egress)允许
或
端口访问任意 IP(0.0.0.0/0)
部分阿里云/腾讯云轻量应用服务器默认屏蔽 25 端口,465/587 也可能被限,需主动申请解封
本地开发用 Homestead/Valet 一般没问题;Docker 环境要注意容器网络是否透传主机防火墙策略
真正卡点往往不在代码里,而在
第一行、邮箱后台的授权开关、以及云控制台那个被忽略的安全组规则——三者缺一不可。
MAIL_MAILER=smtplogMAIL_HOSTMAIL_PORTMAIL_MAILERMAIL_DRIVERMAIL_MAILERlogMAIL_MAILER=smtpMAIL_MAILER.envMAIL_DRIVER=smtplogsmtpphp artisan config:clear.envMAIL_ENCRYPTIONMAIL_PORTtls587ssl465tls465ssl465tls587ssl465null25sslMAIL_ENCRYPTIONsslSSL"ssl"MAIL_PASSWORD.envsudo ufw statussudo firewall-cmd --list-all465587.env