laravel smtp 配置以 .env 为准,需设 mail_mailer=smtp、正确邮箱/端口/密码(gmail 用应用专用密码),改后运行 php artisan config:clear;发信失败优先查 storage/logs/laravel.log 中 swift_transportexception 等错误。

SMTP 配置写在 .env 里,不是 config/mail.php
很多人改了 config/mail.php 却没生效,因为 Laravel 默认从 .env 加载 SMTP 参数,config/mail.php 只是兜底模板。改配置前先确认 .env 是否被正确读取(运行 php artisan tinker 后执行 env('MAIL_MAILER') 看输出)。
-
MAIL_MAILER=smtp(Laravel 8+ 必须设这个,旧版用MAIL_DRIVER) -
MAIL_HOST=smtp.gmail.com(注意不是gmail.com) -
MAIL_PORT=587(非 465,除非你明确启用了MAIL_ENCRYPTION=tls或ssl) -
MAIL_USERNAME=your@gmail.com(Gmail 必须用「应用专用密码」,不能用账号密码) -
MAIL_PASSWORD=xxxx xxxx xxxx xxxx(16 位空格分隔字符串,不是原始密码)
改完别忘了清缓存:php artisan config:clear,否则 .env 变更不生效。
测试邮件发不出?先看 log 和 dd() 报错信息
直接调 Mail::to(...)->send(...) 报错时,错误信息往往藏在底层异常里。别只盯着浏览器白屏,打开 storage/logs/laravel.log 搜 Swift_TransportException 或 Connection could not be established。
- 常见报错
Expected response code 250 but got code "535"→ 认证失败,检查MAIL_USERNAME和MAIL_PASSWORD是否为应用专用密码 - 报错
Connection timed out→ 防火墙或服务器屏蔽了 587 端口,换MAIL_PORT=465+MAIL_ENCRYPTION=ssl试试 - 本地开发用 Gmail 被拒?很多云服务器 IP 被 Gmail 列入黑名单,建议改用 Mailgun 或 Logbook(开发阶段用)
临时加一句 dd(\Illuminate\Support\Facades\Mail::failures()); 能快速确认是否进入发送流程。
MAIL_FROM_ADDRESS 和 from() 冲突时以代码为准
全局发件人地址由 MAIL_FROM_ADDRESS 和 MAIL_FROM_NAME 控制,但如果你在 Mailable 类里显式写了 $this->from('test@example.com', 'Test App'),它会完全覆盖 .env 里的设置。
- 想统一管理发件人?删掉 Mailable 中的
from(),只靠.env - 需要按业务区分发件人(如客服邮件用 support@,通知用 no-reply@)?保留
from(),但注意某些邮箱(如 QQ 邮箱)会校验 SPF,发件域名必须和 SPF 记录一致,否则进垃圾箱 - 使用
to()传数组时,收件人看到的是第一个邮箱,其余被悄悄 BCC —— 这是 SwiftMailer 默认行为,无法关闭
别依赖 config/mail.php 的 'from' => [...],它只在没调 from() 且没设 MAIL_FROM_ADDRESS 时起作用。
Gmail / Outlook 等第三方 SMTP 在生产环境要绕过「登录验证」限制
个人邮箱 SMTP 服务对自动发信有严格限制:Gmail 每天上限 500 封,Outlook 是 100 封,且首次调用常触发「不安全应用访问」拦截。生产环境必须换方案,不能硬扛。
- 小流量项目(日均 MAIL_MAILER=smtp 改成
MAIL_MAILER=mailgun,再填MAIL_HOST=smtp.mailgun.org等参数 - 国内服务器发信困难?考虑腾讯企业邮箱 SMTP(需备案域名),或用
php artisan queue:work异步发 + 重试机制,避免阻塞请求 - 调试阶段别用真实用户邮箱测试,用
log驱动:MAIL_MAILER=log,所有邮件内容会写进storage/logs/laravel.log,安全又可追溯
真正麻烦的不是配通,而是配通之后——某天突然收不到邮件,八成是服务商悄悄限流或封了 IP,得提前埋好日志和告警。










