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

Laravel 9集成Mailgun时提示“Password is not set”问题排查求助

解决Laravel + Mailgun的"Password is not set"错误

嘿,我之前在配置Laravel Mailgun的时候也踩过几乎一模一样的坑!咱们来一步步把这个问题搞定:

首先,清理冗余的.env配置

你当前的.env里同时有MAIL_MAILER=mailgun和旧版的MAIL_DRIVER=mailgun——Laravel从6.x版本开始就改用MAIL_MAILER来指定邮件驱动了,旧的MAIL_DRIVER配置会造成混淆,直接删掉它就行。

正确设置MAILGUN_SECRET

你提到不确定MAILGUN_SECRET该填什么:这个字段需要的是Mailgun控制台里的API密钥(不是你的邮箱密码,也不是Mailgun的登录密码)。你可以登录Mailgun后台,在「Settings」→「API Keys」里找到那个以key-开头的字符串,把它填进去就对了。

去掉不必要的MAIL_PASSWORD

当你用mailgun作为邮件驱动时,Laravel是通过API密钥来验证身份的,根本不需要MAIL_PASSWORD这个配置。这个字段是给SMTP驱动用的,留着它反而会让系统误以为你要走SMTP流程,从而抛出"Password is not set"的错误。直接把这一行注释掉或者删掉就好。

确认config/mail.php的配置

打开config/mail.php,确保mailgun驱动的配置是这样的:

'mailgun' => [
    'transport' => 'mailgun',
    'key' => env('MAILGUN_SECRET'),
    'domain' => env('MAILGUN_DOMAIN'),
    'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
    'scheme' => 'https',
],

重点是key要正确引用MAILGUN_SECRET环境变量,别写错了。

别忘了清除配置缓存

修改.env之后,Laravel可能还在使用旧的缓存配置,这是很多人容易忽略的点!运行下面两个命令:

php artisan config:clear
php artisan cache:clear

做完这些之后,再测试发送邮件应该就能解决"Password is not set"的问题了。另外提个小建议:MAIL_FROM_ADDRESS最好用你在Mailgun里验证过的域名下的邮箱(比如postmaster@yourdomain.mailgun.org),不然可能会触发邮件服务商的反垃圾机制哦。

内容的提问来源于stack exchange,提问作者Gabe Curran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:52:34