Docker环境下Symfony代码无法连接Mailpit,控制台发送正常
问题解决:Symfony容器无法连接Mailpit发送邮件
核心原因
你的Symfony应用运行在Docker容器内,容器里的127.0.0.1指向容器自身,而非宿主机。而Mailpit是另一个独立的Docker容器,所以Symfony容器尝试连接自己的1025端口时自然会被拒绝。
你在宿主机执行控制台命令能成功,是因为宿主机的127.0.0.1指向宿主机本身,端口1025已经通过Compose映射到Mailpit容器,所以可以正常连通。
解决方案
修改.env文件中的MAILER_DSN配置,将主机地址从127.0.0.1替换为Docker Compose中Mailpit服务的名称mailer:
MAILER_DSN=smtp://mailer:1025
原理说明
Docker Compose会自动为所有服务创建一个内部网络,服务名称(这里是mailer)可以作为域名直接解析到对应容器的IP地址。Mailpit容器内部的SMTP服务监听1025端口,所以直接使用mailer:1025就能让Symfony容器正常连接到Mailpit服务。
内容的提问来源于stack exchange,提问作者Marek Buchtela
相关产品推荐
相关产品推荐

