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

Laravel注册新用户遇Swift_TransportException邮件连接错误求助

解决Swift_TransportException邮件连接问题

错误提示Connection could not be established with host mailhog :stream_socket_client(): php_network_getaddresses: getaddrinfo failed: No such host is known的核心原因是PHP无法解析mailhog主机名,导致无法建立SMTP连接。以下是具体排查和解决步骤:

1. 确认Mailhog服务是否正常运行

  • 若使用Docker部署Mailhog,执行docker ps命令,检查Mailhog容器是否处于Up状态,且端口1025已正确映射到主机。
  • 若本地直接运行Mailhog,通过系统进程管理器确认Mailhog进程正在运行,且监听1025端口。

2. 修复主机名解析问题

  • Docker环境:确保Laravel应用容器与Mailhog容器处于同一个Docker网络内,这样才能通过容器名mailhog进行访问。若不在同一网络,可通过docker network connect命令将两者加入同一网络。
  • 本地单机环境:修改系统hosts文件,添加映射规则:
    127.0.0.1 mailhog
    
    Windows系统hosts路径:C:\Windows\System32\drivers\etc\hosts;Linux/macOS路径:/etc/hosts。修改后保存,刷新系统DNS缓存。

3. 验证配置并清除缓存

  • 检查.env文件,确保MAIL_ENCRYPTION设置为null(无引号):
    MAIL_ENCRYPTION=null
    
  • 执行Laravel配置清除命令,确保新配置生效:
    php artisan config:clear
    

4. 测试端口连通性

  • 在项目根目录执行以下命令,测试是否能连接到Mailhog的SMTP端口:
    telnet mailhog 1025
    # 或使用nc命令(若已安装)
    nc -zv mailhog 1025
    
  • 若上述命令失败,尝试替换为localhost测试:
    telnet localhost 1025
    
    若此命令成功,说明主机名解析问题未解决,可临时将.env中的MAIL_HOST改为localhost来绕过解析问题。

5. 临时替代方案(不影响业务流程)

若暂时无法解决Mailhog连接问题,可将邮件驱动改为日志模式,邮件内容会写入Laravel日志文件,不影响用户注册流程:

MAIL_MAILER=log

内容的提问来源于stack exchange,提问作者Bashar Dali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:51:04