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

配置Mailpit与Laravel和Docker协作时的连接问题排查

解决Mailpit邮件连接报错:getaddrinfo failed: Temporary failure in name resolution

问题分析

报错php_network_getaddresses: getaddrinfo failed本质是域名解析失败,你的应用无法定位到Mailpit服务。结合Docker环境,核心问题集中在容器网络配置和邮件服务地址配置不匹配。

解决方案

1. 修正Docker Compose配置

移除Mailpit服务中的hostname: localhost配置,Docker Compose默认会以服务名(mailpit)作为容器的主机名,方便同网络内的其他容器直接访问:

version: "3.9"

services:
  mailpit:
    image: axllent/mailpit
    container_name: mailpit
    restart: always
    volumes:
      - ./data:/data
    ports:
      - 8025:8025
      - 1025:1025
    environment:
      MP_MAX_MESSAGES: 5000
      MP_DATA_FILE: /data/mailpit.db
      MP_SMTP_AUTH_ACCEPT_ANY: 1
      MP_SMTP_AUTH_ALLOW_INSECURE: 1

若你的应用也运行在Docker容器中,需将其加入同一个Docker Compose配置文件,确保两者处于同一网络。

2. 调整邮件环境变量

根据应用运行环境选择对应配置:

  • 应用在Docker容器内:使用Mailpit的服务名作为主机地址
    MAIL_MAILER=smtp
    MAIL_HOST=mailpit
    MAIL_PORT=1025
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null
    MAIL_FROM_ADDRESS="hello@example.com"
    MAIL_FROM_NAME="${APP_NAME}"
    
  • 应用在宿主机(非Docker):使用本地回环地址即可
    MAIL_MAILER=smtp
    MAIL_HOST=127.0.0.1
    MAIL_PORT=1025
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null
    MAIL_FROM_ADDRESS="hello@example.com"
    MAIL_FROM_NAME="${APP_NAME}"
    

3. 检查容器网络连通性

若应用和Mailpit不在同一Docker网络,手动将应用容器加入Mailpit所在网络:

  1. 查看Mailpit所在网络:
    docker inspect mailpit | grep Networks
    
  2. 将应用容器加入该网络:
    docker network connect [网络名称] [应用容器名称]
    

4. 清理无效配置

删除你创建的Dockerfile,该文件写法错误(RUN指令无法直接执行docker run参数),Mailpit的管理完全可以通过Docker Compose完成。

5. 验证操作

  1. 重启Mailpit服务:
    docker-compose down && docker-compose up -d
    
  2. 测试邮件发送功能,同时访问http://localhost:8025查看Mailpit Web界面是否收到邮件。

内容的提问来源于stack exchange,提问作者tech leadz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:23:10