Laravel开发邮件验证接口 Postman报错SMTP连接无法建立如何解决
解决步骤
1 修正SMTP配置参数匹配
- 不要在MAIL_PORT字段填写多个端口值,每次只保留一个端口测试,端口与加密方式对应规则如下:
- 端口587:搭配
MAIL_ENCRYPTION=TLS使用,是Mailtrap推荐的TLS加密连接配置 - 端口25/2525:搭配
MAIL_ENCRYPTION=null使用,适用于不加密的SMTP连接
- 端口587:搭配
- 优先固定配置为:
MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=587 MAIL_USERNAME=你的Mailtrap用户名 MAIL_PASSWORD=你的Mailtrap密码 MAIL_ENCRYPTION=TLS MAIL_FROM_ADDRESS=test@gmail.com MAIL_FROM_NAME="${APP_NAME}"
2 排查网络连通性问题
该报错核心为TCP连接超时,绝大多数情况由本地网络/防火墙/运营商端口拦截导致:
- 本地终端执行命令测试端口连通性:
telnet smtp.mailtrap.io 587,如果返回连接超时,可确认是网络层面拦截 - 临时关闭本地防火墙、杀毒软件的网络防护规则后重试
- 如仍无法连接,切换手机热点网络测试,排除运营商对公网25/587端口的封禁限制
3 确认Laravel配置生效
- 清空缓存后重新生成配置缓存,执行命令:
php artisan config:clear php artisan config:cache
- 可新增临时测试路由打印实际加载的邮件配置,核对参数是否和.env一致:
Route::get('/test-mail-config', function () { dd(config('mail')); });
4 业务逻辑验证
如果网络侧确实无法连接Mailtrap,可临时修改驱动为log验证业务逻辑是否正常:MAIL_MAILER=log
修改后发送的邮件会写入storage/logs/laravel.log文件,可确认邮箱验证的业务代码无问题。
内容的提问来源于stack exchange,提问作者barnabas
相关产品推荐
相关产品推荐

