Laravel 9发送邮件时出现Unsupported mail transport错误求助
解决Laravel 9 "Unsupported mail transport" 邮件错误
问题根源
Laravel 9 已弃用 MAIL_DRIVER 环境变量,改用 MAIL_MAILER 指定邮件驱动,同时邮件配置结构也有调整,你的配置沿用了旧版本的变量名与结构,导致系统无法识别正确的传输驱动。
具体修复步骤
1. 更新 .env 文件配置
将 MAIL_DRIVER 替换为 MAIL_MAILER,补充必要配置项:
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=*****@gmail.com MAIL_PASSWORD=******* MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=*****@gmail.com MAIL_FROM_NAME="${APP_NAME}"
2. 修正 config/mail.php 配置
确保配置使用 Laravel 9 要求的结构,重点替换 driver 为 transport,并设置默认邮件驱动:
return [ 'default' => env('MAIL_MAILER', 'smtp'), 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.gmail.com'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'auth_mode' => null, ], // 其他邮件驱动配置可保留或按需删除 ], 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), 'name' => env('MAIL_FROM_NAME', 'Example'), ], ];
3. 处理 Gmail 权限问题
- 若谷歌账号开启两步验证:必须使用应用专用密码替代普通密码。前往谷歌账号「安全性」设置,生成对应应用的专用密码后填入
MAIL_PASSWORD。 - 若未开启两步验证:需在谷歌账号设置中启用「不太安全的应用访问」(不推荐,建议优先启用两步验证并使用应用专用密码)。
4. 清除配置缓存
执行命令让新配置生效:
php artisan config:clear php artisan cache:clear
内容的提问来源于stack exchange,提问作者heidelbeg
相关产品推荐
相关产品推荐

