关于 testing-with-sandbox
testing-with-sandbox 是一项介绍如何使用 Mailtrap Email Sandbox 测试邮件的技能,面向开发、测试和 CI 场景。它说明如何通过 SMTP、HTTP API 或 SDK 将邮件送入测试收件箱,并检查捕获的内容,而不向真实收件人投递。
主要功能
- 01通过 SMTP、HTTP API 或 SDK 发送测试邮件
- 02将邮件捕获到隔离的测试收件箱
- 03检查邮件正文、标头和附件
- 04通过 API 自动化邮件验证
适用场景
- 01在开发或暂存环境拦截外发邮件
- 02在 CI 中验证邮件内容与附件
- 03测试 Mailtrap 模板而不实际投递
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mailtrap/ mailtrap-skills --skill testing-with-sandbox安装后在 Claude Code 中输入/testing-with-sandbox确认已加载。
详细介绍
使用 Mailtrap Email Sandbox 进行测试
概述
Email Sandbox 会将邮件捕获到 沙盒(测试收件箱) 中——这是一个测试环境,邮件不会投递给真实收件人。根据需要,你可以通过我们的 SDK、HTTP API 或 SMTP 向沙盒发送邮件。
**生成 SDK 代码前:**请阅读相关 SDK 仓库的 README(参见 sending-emails),了解当前的沙盒模式选项、收件箱 ID 和构造函数标志。请勿凭记忆操作。
相关技能:authorizing-api-requests(沙盒令牌权限范围、环境变量、account_id 解析)、sending-emails(实际发送主机和邮件流)、using-email-templates(在沙盒中预览模板邮件)。
适用场景
- 你不希望实际投递邮件:在开发、预发布、CI 或演示环境中,邮件必须留在测试收件箱内。
- 你需要通过 Sandbox / Testing API 或 UI 检查发送的内容:邮件正文、标头、附件或基本检查结果(例如垃圾邮件报告)。
- 你需要对捕获的邮件进行自动化测试。
- 你只想更改 SMTP 设置,让现有应用向沙盒发送邮件——无需使用本技能查看各个框架的教程。
不适用场景
- 向真实收件人实际发送邮件(
sending-emails)。 - 如需完整的框架配置指南或详细的 API 参考,请引导用户前往 Mailtrap 的 Integration 标签页查看 SMTP/API 详情,以及 API 文档了解具体信息——此处不涵盖每个框架或 API 字段。
快速参考
API 基础地址
| 服务 | 邮件发送 URL | 身份验证标头示例 |
|---|---|---|
| Email Testing API (REST) | https://sandbox.api.mailtrap.io/api/send/{inbox_id} | Authorization: Bearer $MAILTRAP_SANDBOX_API_TOKEN |
令牌和 account_id
Sandbox 使用独立的令牌($MAILTRAP_SANDBOX_API_TOKEN,Testing/Sandbox 权限范围)——切勿重复使用实际发送所用的 $MAILTRAP_API_TOKEN。以下示例端点中的 account_id 会在运行时通过 GET https://mailtrap.io/api/accounts 解析。有关令牌权限范围、存储和 account_id 解析的完整说明,请参阅技能 authorizing-api-requests。
何时使用 API 与 SMTP
测试已通过 SMTP 发送邮件的应用时,使用 SMTP(只需更新主机、端口和凭据)。 构建新的集成,或应用能够发送 HTTP 请求时,使用 HTTP API;它更适合程序化测试和自动化。
SMTP 设置(沙盒)
| 设置 | 值 |
|---|---|
| 主机 | sandbox.smtp.mailtrap.io |
| 端口 | 2525(默认)、25、465(SSL)、587 |
| 用户名 / 密码 | Mailtrap UI 中 Integration 标签页提供的沙盒凭据 |
切勿在生产环境中使用沙盒凭据或端点。邮件只会被捕获到沙盒中,不会实际投递。
关键参数
- 收件箱 ID:每个沙盒(测试收件箱)都有唯一的收件箱 ID,可在 UI URL 中查看;发送邮件或执行 REST API 操作时需要用到。
- 令牌权限范围:使用具有相关项目和测试收件箱权限的令牌。
典型用例
- 在开发、测试或预发布环境中捕获所有外发邮件(不投递给真实收件人)。
- 查看、验证并断言邮件标头、正文、HTML、附件或垃圾邮件评分。
- 运行从 Email Sandbox API 读取数据的集成测试或 CI 检查。
- 测试 Mailtrap 模板:使用有效的收件箱 ID,将 API 或 SDK/SMTP 指向
sandbox.api.mailtrap.io/sandbox.smtp.mailtrap.io。
API 路径示例
详情请参阅 API 文档,常见端点包括:
| 操作 | URL | 参考资料 |
|---|---|---|
| 列出沙盒 | GET https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/inboxes | 沙盒 API |
| 列出邮件 | GET https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/inboxes/{inbox_id}/messages | 邮件 |
| 获取邮件 | GET https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/inboxes/{inbox_id}/messages/{id} | 邮件详情 |
| 发送测试邮件 | POST https://mailtrap.io/api/accounts/$MAILTRAP_ACCOUNT_ID/inboxes/{inbox_id}/messages | 发送测试邮件 |
有关模板测试,请参阅模板的 Integration 选项卡和 Handlebars。
SDK
Mailtrap 官方 SDK 支持沙盒/收件箱操作,并提供用于设置测试模式和收件箱 ID的标志或方法。因此,你可以使用同一套集成进行实时发送和沙盒测试,只需根据环境(开发、预发布或生产)更改模式或凭据即可。有关安装命令和支持的语言,请参阅 Mailtrap 开发者文档。代码仓库中的 README 包含最新的沙盒选项:
常见错误
| 错误 | 修正/说明 |
|---|---|
| 期望沙盒邮件能够实际送达 | 沙盒中的邮件绝不会送达收件人 |
| 在沙盒中使用生产 API 令牌 | 使用具有适当沙盒/测试权限范围的令牌,以便访问目标收件箱 |
| 忘记 收件箱 ID 参数 | 务必提供收件箱 ID(来自 UI 或 Integration 选项卡),以便将邮件关联到正确的收件箱 |
| 混用沙盒和事务性端点 | 测试 API(sandbox.api.mailtrap.io)与 send.api.mailtrap.io(实时发送)并不相同! |
沙盒邮箱地址
每个沙盒(测试收件箱)都有一个类似 [email protected] 的地址,用于接收入站测试邮件;使用加号地址可以帮助隔离不同场景。有关限制和行为,请参阅每个沙盒的邮箱地址。