Laravel配置Swift Mailer发信报554错误:无有效收件人排查求助
错误原因
554 5.5.1 no valid recipients 是SMTP服务器返回的投递拒绝错误,结合你提供的配置,核心问题如下:
- config/mail.php 配置语法错误:
env()函数第一个参数必须为.env文件中定义的环境变量键名,你错误直接填入了具体的账号密码值:
// 错误写法 'username' => env('egzon@thetekhne.com'), 'password' => env('######'),
该错误会导致Laravel无法正确读取.env里的SMTP认证信息,身份校验失败后被服务器判定为非法请求,返回无有效收件人错误。
- 发件人地址不匹配:你SMTP认证账号为
egzon@thetekhne.com,但全局发件人配置为contact@onehost.shop,部分SMTP服务器要求发件人地址必须和认证账号完全一致,否则会拒绝投递。 - 其他可能原因:调用邮件发送代码时传入的收件人地址为空、格式错误,或SMTP服务器限制了发信权限、收件人域名白名单。
解决方案
- 修复配置错误
将config/mail.php中的用户名、密码配置修改为正确的环境变量读取写法:
'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'),
修改后执行php artisan config:clear清空配置缓存,确保新配置生效。
2. 对齐发件人地址
如果修改配置后仍然报错,在.env文件中将全局发件人地址修改为和SMTP认证账号一致:
MAIL_FROM_ADDRESS=egzon@thetekhne.com
- 测试发送逻辑
新增测试路由验证收发件人配置有效性:
// routes/web.php Route::get('/test-mail', function () { \Mail::raw('测试邮件内容', function ($msg) { $msg->to('你的有效测试邮箱')->subject('邮件功能测试'); }); return '请求已提交'; });
访问对应路由测试,确认收件人地址格式合法、无拼写错误。
4. 确认SMTP服务权限
如果以上操作都无效,联系你的SMTP服务提供商确认账号发信权限、是否有域名或频率限制。
内容的提问来源于stack exchange,提问作者nooo
相关产品推荐
相关产品推荐

