You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel配置Gmail SMTP却连接Mailpit失败的问题求助

问题分析与解决方案

你遇到的核心问题是Laravel未加载.env中配置的Gmail SMTP参数,仍默认使用Mailpit配置。以下是逐步排查和解决方法:

1. 确认配置文件的变量引用

打开config/mail.php,检查smtp驱动的配置是否正确读取环境变量:

'smtp' => [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST', 'mailpit'),
    'port' => env('MAIL_PORT', 1025),
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'timeout' => null,
    'auth_mode' => null,
    // 你的stream配置...
],

确保每个字段通过env()函数读取.env值,默认值为Mailpit是Laravel默认逻辑,正常会被你的.env覆盖。

2. 彻底清除配置缓存

若之前执行过php artisan config:cache,Laravel会生成配置缓存文件,后续.env修改不会生效。执行以下命令清理:

php artisan config:clear
php artisan cache:clear
php artisan route:clear

清理完成后重启本地开发服务器,确保新配置生效。

3. 修正Gmail SMTP配置参数

你的.env存在参数匹配错误:

  • 端口587对应加密方式为tls,端口465才用ssl

修正后的.env配置:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587
MAIL_USERNAME=est.juan.arango1@unimilitar.edu.co
MAIL_PASSWORD=[你的Google App Password]
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="est.juan.arango1@unimilitar.edu.co"
MAIL_FROM_NAME="${APP_NAME}"

4. 验证Google App Password有效性

确保满足以下条件:

  • Google账号已开启两步验证
  • 使用的是专门生成的App Password(非Google账号密码)
  • App Password是针对"Mail"应用生成的

5. 检查是否存在覆盖配置的文件

Laravel优先加载.env.local、.env.testing等环境特定配置文件,若这类文件存在且配置了Mailpit参数,会覆盖主.env。检查项目根目录,如有则删除或修改其中的邮件配置。

6. 测试当前配置

使用php artisan tinker进入交互模式,执行命令查看实际加载的邮件配置:

dd(config('mail.mailers.smtp'));

输出的host、port等字段应与.env中Gmail参数一致,若仍为mailpit,需检查.env文件语法(比如多余空格、引号错误)。


内容的提问来源于stack exchange,提问作者Juan Pablo Arango Lizcano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:45:17