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

localhost/kubernetes pod环境下模拟邮箱接收测试邮件实现密码重置测试咨询

可用模拟邮件服务方案

以下两个服务均支持本地或Kubernetes部署,无需修改后端代码/配置即可使用,完全匹配你的需求:

1. MailCatcher

  • 支持本地直接运行,也可通过容器部署在Kubernetes Pod中,资源占用极低
  • 自带标准SMTP服务(默认端口1025)和HTTP查询接口,支持调用API拉取全量邮件,也可按收件人邮箱过滤
  • 支持任意符合RFC标准格式的邮箱地址作为收件人,无需提前创建邮箱账号,所有发往合法格式邮箱的邮件都会自动存入对应的虚拟收件箱
  • 无需修改后端配置的适配方式:本地测试时修改hosts将后端配置的原始SMTP域名指向127.0.0.1;Kubernetes环境下可创建与后端配置的SMTP服务同名、同端口的Service,将流量转发到MailCatcher Pod即可,后端完全无感知

2. Mailslurper

  • 轻量级无依赖模拟邮件服务,单二进制文件即可启动,容器镜像体积仅30MB左右,适合Kubernetes快速部署
  • 默认提供2500端口作为SMTP收信端口,8080端口提供API服务,/api/mail接口直接返回结构化的邮件数据,包含收件人、标题、HTML/纯文本正文等字段,非常方便提取重置链接中的密钥
  • 同样支持任意合法格式的邮箱地址收件,无邮箱数量限制
  • 适配无配置修改的逻辑和MailCatcher一致,通过流量路由将后端原本的SMTP请求转发到Mailslurper服务即可

Cypress 集成示例

你可以直接在Cypress测试用例中调用模拟邮件服务的API提取重置密钥,参考代码如下:

// 触发前端密码重置请求后,调用邮件服务API拉取邮件列表
cy.request('GET', 'http://<模拟邮件服务地址>/api/mail')
  .its('body')
  .then(mailList => {
    // 过滤发给测试用邮箱的密码重置邮件
    const targetMail = mailList.find(item => item.toAddress.includes('test-reset@demo.com'))
    // 从邮件正文中提取重置密钥
    const resetSecret = targetMail.body.match(/reset-password\/([a-zA-Z0-9]{32,})/)[1]
    // 访问重置页面完成后续测试流程
    cy.visit(`/reset-password/${resetSecret}`)
  })

内容的提问来源于stack exchange,提问作者Adam Waśniewski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 22:54:04