
本文详解 laravel 在 ovh 云服务器(通过 laravel forge 部署)中无法发送 gmail 邮件的常见原因,重点指出 google 账户安全策略变更导致的认证失效问题,并提供可立即生效的配置修正、app password 生成步骤及安全验证要点。
在 Laravel 生产环境中突然无法发送邮件,且日志无报错、测试函数返回成功但收件箱/垃圾邮件箱均无任何投递痕迹——这是典型的SMTP 认证静默失败现象。尤其当您使用 Gmail 作为 SMTP 服务商(如配置中 MAIL_HOST=smtp.googlemail.com)时,根本原因几乎总是 Google 的账户安全策略升级:自 2022 年起,Google 已全面停用“用户名+密码”方式的第三方应用访问(即“低安全性应用访问”已彻底废弃),强制要求启用双重验证(2-Step Verification)并使用专用 App Password替代账户密码。
✅ 正确配置方案(推荐使用 SMTP + TLS)
请将 .env 文件中的邮件配置更新为以下经过生产验证的版本:
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=your-verified-gmail@gmail.com MAIL_PASSWORD="your_16_digit_app_password" # 注意:必须用英文双引号包裹(含空格或特殊字符时必需) MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=noreply@yourdomain.com MAIL_FROM_NAME="Your App Name"
⚠️ 关键修正说明:MAIL_HOST 必须为 smtp.gmail.com(smtp.googlemail.com 已弃用且不保证兼容);MAIL_PORT=587 + MAIL_ENCRYPTION=tls 是 Gmail 官方推荐的现代加密组合(非 465/SSL);MAIL_DRIVER 必须设为 smtp(mail 驱动依赖本地 sendmail,不可控且易被 OVH/Forge 环境限制);MAIL_PASSWORD 必须是 Google 生成的 16 位 App Password,绝非您的 Gmail 登录密码。
? 如何生成有效的 App Password
- 登录您的 Gmail 账户 → 进入 Google 账户管理;
- 左侧菜单选择 Security → 向下滚动至 "2-Step Verification" 并确保已开启(若未开启,请先完成设置);
- 返回 Security 页面,找到 "App passwords"(需已启用 2SV 才可见)→ 点击进入;
- 在 "Select app" 下拉框选择 Mail,在 "Select device" 中选择 Other (Custom name),输入如 Laravel-Production;
- 点击 Generate,系统将生成一个 16 位字母数字组合(如 abcd efgh ijkl mnop);
- 立即复制该密码(页面关闭后不可再次查看),粘贴至 .env 中 MAIL_PASSWORD 字段(保留引号)。
? 验证与调试建议
执行以下命令快速验证配置是否生效:
php artisan tinker
>>> use Illuminate\Support\Facades\Mail;
>>> Mail::raw('Test from Laravel', function ($m) { $m->to('your-test@email.com')->subject('Laravel SMTP Test'); });若仍失败,请检查:
- ✅ config/mail.php 是否已运行 php artisan config:clear 清除缓存(Forge 部署后务必执行);
- ✅ OVH 服务器是否屏蔽了出站 587 端口(联系 OVH 支持确认,或临时改用 MAIL_PORT=465 + MAIL_ENCRYPTION=ssl 测试);
- ✅ Gmail 账户是否启用了「允许不够安全的应用」(❌ 已无效,勿尝试);
- ✅ MAIL_FROM_ADDRESS 域名是否与 Gmail 账户主域名一致(Gmail 对 noreply@yourdomain.com 类发件人有严格 SPF/DKIM 要求,建议初期直接使用 xxx@gmail.com 测试)。
? 总结
Gmail 邮件在 Laravel 生产环境“静默失败”的本质是身份认证过时。解决方案不是切换驱动或调整加密方式,而是回归 Google 官方认证路径:启用 2-Step Verification → 生成 App Password → 使用标准 SMTP+TLS 配置。此方法稳定、安全、符合 Google 当前策略,也是 Laravel Forge 环境下最可靠的 Gmail 集成实践。切勿回退至已废弃的 mail 驱动或 googlemail.com 主机名——简洁、标准、可维护,才是生产部署的核心原则。











