Laravel应用在GoDaddy主机上SMTP邮件发送故障求助
排查GoDaddy主机上Laravel邮件发送失败问题
首先修正配置矛盾
你当前的.env配置和GoDaddy提供的中继要求存在冲突:
- GoDaddy明确要求
smtp auth=false、smtp ssl=false/none,但你的配置里保留了MAIL_USERNAME、MAIL_PASSWORD,并设置MAIL_ENCRYPTION=TLS,这会直接导致SMTP连接失败。
按照GoDaddy要求修正.env配置:
MAIL_MAILER=smtp MAIL_HOST=localhost MAIL_PORT=25 MAIL_USERNAME= MAIL_PASSWORD= MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS="xyz@domain.com" MAIL_FROM_NAME="${APP_NAME}"
注意:
MAIL_ENCRYPTION需设为null,对应GoDaddy要求的无加密规则,Laravel中不能填false,必须用null。
下一步排查步骤
清除配置缓存
运行以下命令确保新配置生效:php artisan config:clear若之前执行过
config:cache,必须先清除缓存,否则旧配置会持续生效。查看Laravel日志
检查storage/logs/laravel.log文件,里面会记录邮件发送失败的具体错误信息(如连接被拒绝、认证失败、SPF验证失败等),这是定位问题的核心依据。测试基础邮件发送
先排除业务代码的干扰,写一个简单的测试路由:
在routes/web.php中添加:Route::get('/test-mail', function () { try { \Illuminate\Support\Facades\Mail::raw('测试邮件内容', function ($message) { $message->to('xyz@domain.com')->subject('GoDaddy Laravel 测试邮件'); }); return '邮件发送请求已提交,请查看日志和收件箱'; } catch (\Exception $e) { return '发送失败:' . $e->getMessage(); } });访问该路由,直接查看返回信息和日志内容。
确认GoDaddy主机限制
- 联系GoDaddy确认主机的本地SMTP服务(localhost:25)是否正常运行,部分共享主机可能默认禁用或限制端口25。
- 检查你的Google Workspace域名
domain.com的SPF记录,是否包含GoDaddy主机的IP地址。若SPF记录未授权该IP发送邮件,Google会直接拒收(可能进入垃圾箱或被拦截)。
验证发件地址权限
GoDaddy的本地SMTP可能要求发件地址是主机上创建的邮箱(而非外部Google Workspace邮箱),若属于这种情况,你需要将MAIL_FROM_ADDRESS改为GoDaddy主机上的邮箱,或联系GoDaddy申请允许中继外部域名的发件地址。
内容的提问来源于stack exchange,提问作者hellbuddy
相关产品推荐
相关产品推荐

