SuperAPI AI 工具集

mailpit-integration

测试与质量

查看项目

更新于 10-15 10:46

技能介绍

用途

该技能用于在本地测试邮件发送,配合 Mailpit 与 .NET Aspire 使用。Mailpit 会捕获所有 SMTP 流量而不投递邮件,并提供 Web UI 查看捕获的邮件、暴露 API 供程序化访问,支持 HTML 渲染、邮件头和附件。适用于在本地测试邮件投递、在 .NET Aspire 中搭建邮件基础设施、编写验证邮件发送的集成测试,以及调试邮件渲染与邮件头。

相关技能:aspnetcore/mjml-email-templates(MJML 模板编写)、testing/verify-email-snapshots(渲染 HTML 的快照测试)、aspire/integration-testing(通用 Aspire 测试模式)。

主要能力

  • 通过 Aspire AppHost 以容器方式运行 Mailpit,暴露 UI(8025)与 SMTP(1025)端点。
  • 支持 SMTP 配置(主机、端口、SSL、发件人地址与名称,及可选用户名/密码)。
  • 提供 IEmailSender 接口及基于 MailKit 的 SmtpEmailSender 实现。
  • 提供 Mailpit API 客户端封装:获取消息、清空消息、按条件等待消息。
  • 提供 Aspire 集成测试夹具,可从 Aspire 获取 Mailpit URL 并创建 API 客户端。
  • 支持区分开发与生产环境的邮件发送器注册。
  • 提供排障指引(邮件未出现、连接被拒、Aspire 端点未解析)。

使用方式

  1. 在 AppHost/Program.cs 中添加 Mailpit 容器,并让 API 项目引用其 SMTP 端点,同时设置 Smtp__Host 环境变量。
  2. 在 appsettings.json 中配置 Smtp 段(主机 localhost、端口 1025、EnableSsl 为 false、发件人地址与名称)。
  3. 定义 SmtpSettings 配置类并注册:通过 services.Configure<SmtpSettings> 绑定配置,注册 IEmailSender 单例。
  4. 实现 SmtpEmailSender(使用 MailKit,需执行 dotnet add package MailKit),通过 SmtpClient 连接并按需认证,构造 MimeMessage 发送。
  5. 访问 http://localhost:8025 查看收件箱、HTML 视图、源代码视图、邮件头与附件;Mailpit UI 端点也会出现在 Aspire 仪表板的 Resources 下。
  6. 集成测试中通过 AspireFixture 启动应用、获取 Mailpit URL、创建 HttpClient;使用 MailpitClient 清空消息、获取消息或按条件等待消息,并对收件人、主题、HTML 正文进行断言。

适用场景

  • 本地开发时不发送真实邮件的邮件投递测试。
  • 在 .NET Aspire 中搭建邮件基础设施。
  • 编写验证邮件已发送的集成测试。
  • 调试邮件渲染与邮件头。
  • 验证异步邮件(带超时等待)、批量操作发送多封邮件、邮件内容(如密码重置链接)等测试模式。

限制

  • 技能资料主要面向 .NET / Aspire 环境,示例依赖 MailKit 包。
  • 生产环境需改用真实 SMTP(如 SendGrid、Postmark 等),并按示例启用 SSL。
  • 关于收费、价格、性能指标等事实,资料中暂未提供。