跳转至

Mailpit 与 MailHog:本地工具 vs Mailexam 团队协作

MailHogMailpit 是常用的本地外发邮件拦截工具。它们在您的机器或 Docker 中运行,在 localhost 上接收 SMTP,并在 Web 界面中展示邮件。对独自在笔记本上开发的工程师来说,这种方式方便且免费。

Mailexam 解决同样的核心问题——用测试 SMTP 收件箱代替真实投递——但以面向协作的云服务形式提供:团队共享收件箱、CI/CD 与 staging 无需隧道即可访问、API 支持自动化测试。适合分布式团队,包括跨时区、跨国家的国际协作场景。

概览

MailHog Mailpit Mailexam
模式 本地进程 / 容器 本地进程 / 容器 云 SaaS
适用对象 单机上的单个开发者 单机上的单个开发者 团队、CI/CD、QA
共享收件箱 否 — 收件箱绑定在该主机 否 — 收件箱绑定在该主机 — 一个项目,共同访问
CI/CD 访问 仅当 runner 在同一台机器 同上 — 任意 runner 均可 SMTP/API
同事访问 SSH、屏幕共享、端口转发 同上 浏览器与 API 凭据
账户与权限 账户、项目、API 令牌
重启后历史 默认丢失 可本地配置 云端保留
自动化测试 API 有限(MailHog)/ 有(Mailpit) REST API REST API

并非「谁更好」

Mailpit 和 MailHog 非常适合在笔记本上个人调试。当多人远程系统(CI、staging、异地同事)需要看到同一封邮件、且不想折腾网络时,应选择 Mailexam。

Mailpit 与 MailHog 适合谁

本地拦截器很好地覆盖 「只有我一人写代码、在旁边看邮件」 的场景:

  • 通过 docker run 或二进制快速启动,无需注册;
  • 数据完全留在本机;
  • 不依赖外部服务;
  • 足够在本机验证模板、排版或 SMTP 集成。

本质上它们是单用户方案:收件箱存在于进程所在的主机。除非您转发端口、配置 VPN 并告知地址,否则其他人无法打开您的 Mailpit。

本地工具的天花板

当项目出现团队协作时,常见问题如下:

1. 「邮件在我的笔记本上,QA 看不到」

开发者发出测试邮件 — 进入本地 Mailpit。另一办公室(或另一大洲)的测试人员无法打开同一收件箱:他们的 localhost 不是您的机器。截图、会议和「把邮件链接贴到 Slack」成了常态。

2. CI/CD 与共享 runner

流水线将邮件发往 127.0.0.1:1025。在共享 CI runner(GitLab、GitHub Actions、Jenkins)上,应用旁边没有您的 Mailpit — 或它属于其他 job,构建结束后被清空。要在 CI 中断言邮件内容,往往不得不在同一 job 中启动 Mailpit、解析其 API,或 mock 发送 — 都会增加流水线复杂度。

3. Staging 与多环境

Staging、预览环境与本地开发是三台不同主机、三个不同本地收件箱(若已配置)。QA 没有统一入口查看「项目的全部测试邮件」,跨环境对比也更困难。

4. 国际与分布式团队

团队分布在莫斯科、柏林、新加坡时,「通过 VPN 连我的 localhost」无法扩展:时区、企业防火墙、安全策略。需要统一地址统一历史,通过浏览器访问,而无需向开发者笔记本做端口转发。

5. 入职与统一配置

每位新开发者各自启动 Mailpit:docker-compose 端口不同、镜像版本不同、README 里漏写服务。使用 Mailexam 时,欢迎邮件中的一套 SMTP 参数即可 — 复制到 .env 与 CI 密钥;所有人共享同一收件箱。

6. 无法划分访问权限

本地拦截器没有「仅 QA」或「仅 CI 令牌」的概念。要么能访问机器/容器,要么不能。产品团队常需要独立项目(feature、staging、demo)与API 令牌用于自动化测试 — 而无需服务器 root 权限。

Mailexam 如何支持团队协作

Mailexam 是带控制台与 API 的云端测试 SMTP 收件箱。邮件不会投递给真实收件人,而是进入您账户中的项目

对团队的价值:

任务 Mailexam 方案
共享收件箱 一个项目、一套 SMTP 凭据;有权限的人可在控制台看到相同邮件
CI/CD Runner 发往 {login}.mailexam.cn — 流水线(API)与浏览器均可访问
Staging / 预览 服务器使用相同凭据 — QA 无需登录服务器即可验信
自动化测试 REST API:列表、正文、附件 — 全团队统一流程
多环境 独立项目或项目内邮箱(见 API)
分布式团队 任意地点 HTTPS 控制台;无需 VPN 到开发者笔记本

典型流程:

  1. 负责人或 DevOps 创建项目(或使用注册时的项目)。
  2. 将 SMTP 登录名、密码、主机分发给团队并写入 CI 密钥。
  3. 开发者、QA 与流水线向同一 sandbox 发信。
  4. QA 在控制台查看;CI 通过 API 断言内容。

连接说明见集成示例

如何选择

场景 建议
单人开发、离线、全在笔记本 Mailpit / MailHog 或 Mailexam(需联网)
两人及以上、共享 QA Mailexam
共享 runner 上的邮件 CI 测试 Mailexam
Staging + 开发 + CI — 邮件单一事实来源 Mailexam
远程或国际团队 Mailexam
严格要求全部 on-prem、不上云 Mailpit / MailHog(或自建同类方案)

从 Mailpit 或 MailHog 迁移

发送代码无需修改 — 只需更新 .envdocker-compose 与 CI/CD 中的 SMTP 参数。

迁移前(本地)

MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null

端口可能是 1025(MailHog)或 1025 / 587(Mailpit)。通常无需认证。

迁移后(Mailexam)

MAIL_HOST=您的登录名.mailexam.cn
MAIL_PORT=587
MAIL_USERNAME=您的登录名
MAIL_PASSWORD=您的密码
MAIL_ENCRYPTION=tls

凭据见注册后的欢迎邮件控制台

Docker Compose

团队开发可从 docker-compose.yml 中移除 mailpit 服务 — 应用直接连接 Mailexam。仅对刻意完全离线工作的开发者保留本地 Mailpit。

自动化测试

若测试曾调用 Mailpit API(如 /api/v1/messages),请改用 Mailexam API — 典型流程:SMTP 发送 → 等待 1–5 秒 → 按主题或收件人过滤 GET /api/v1/email

更多


需要为团队配置帮助?请联系 support@mailexam.cn