
google 已停用“低安全性应用”访问权限,laravel 项目本地发信失败时,需通过启用两步验证并生成 app password 替代原邮箱密码,即可安全恢复 gmail smtp 发送功能。
google 已停用“低安全性应用”访问权限,laravel 项目本地发信失败时,需通过启用两步验证并生成 app password 替代原邮箱密码,即可安全恢复 gmail smtp 发送功能。
自 2022 年 5 月起,Google 全面弃用“允许不够安全的应用访问账号”(Less Secure Apps)选项,这意味着直接使用 Gmail 账户密码配置 SMTP(如 Laravel 的 MAIL_PASSWORD)将无法通过身份验证,导致邮件发送失败(常见报错:535-5.7.8 Username and Password not accepted)。
解决方法是启用 Google 账户的两步验证(2-Step Verification),并生成一个仅用于第三方应用的应用专用密码(App Password)——该密码为 16 位一次性密钥,专为 SMTP 等协议设计,具备更高安全性且不受应用密码泄露影响主账户。
✅ 正确配置步骤如下:
启用两步验证
登录 Google 账户安全中心 → 在“登录与安全性”下找到 “两步验证” → 按向导完成启用(需绑定手机号或安全密钥)。生成 App Password
启用后,返回同一页面 → 找到 “应用专用密码”(App passwords)→ 点击进入 → 选择应用类型为 邮件,设备类型选 其他(自定义名称) → 输入如 Laravel-Local → 点击 GENERATE。
⚠️ 注意:生成后会显示一个 16 位字母密码(无空格、全小写),请立即复制保存——该密码仅显示一次,关闭后不可再查。-
更新 Laravel 邮件配置
在 .env 文件中修改 SMTP 凭据(勿使用 Gmail 账号密码!):MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=yourname@gmail.com MAIL_PASSWORD=abcd efgh ijkl mnop # ← 替换为刚生成的16位App Password(去掉空格) MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=yourname@gmail.com MAIL_FROM_NAME="${APP_NAME}"✅ 提示:MAIL_PASSWORD 中若含空格,请直接粘贴为连续 16 字符(如 abcdefghijklmnop),Laravel 会自动识别。
-
刷新配置并测试
php artisan config:clear php artisan cache:clear
编写测试命令验证:
// app/Console/Commands/SendTestEmail.php public function handle() { Mail::raw('Hello from Laravel + Gmail App Password!', function ($message) { $message->to('recipient@example.com')->subject('Gmail SMTP Test'); }); $this->info('Test email sent successfully!'); }
? 重要注意事项:
- App Password 仅对已启用两步验证的账户可用;未开启则不会显示该选项。
- 每个应用建议使用唯一名称(如 Laravel-Dev / Laravel-Prod),便于后续管理或撤销。
- 若更换设备、重装系统或怀疑密码泄露,可随时在 Google 账户中 删除对应 App Password,无需修改主密码。
- 生产环境建议使用专业邮件服务(如 Mailgun、SendGrid 或 Outlook SMTP),Gmail 限制每24小时最多发送 500 封邮件(免费账户)。
至此,Laravel 本地开发环境即可通过 Gmail SMTP 安全、稳定地发送测试邮件。



















