立即试用
无需账户。你将获得一个私密收件箱,最长可用 10 分钟,并可随时删除。同一网络每 10 分钟可创建一个新的试用收件箱。
- 试用
- 无需注册 · 1 个收件箱 · 10 分钟 · 仅限当前标签页
- 开发者令牌
- 已验证账户 · 同时 5 个收件箱 · 最长 60 分钟 · REST 和 MCP
验证邮箱后,即可创建限定权限、可撤销的 API 密钥。
- 创建收件箱
- 等待邮件
- 阅读邮件
私密试用收件箱
试用密钥仅保存在此标签页的内存中。刷新页面会失去访问权限,但收件箱仍会自动到期。
邮件以纯文本显示。验证码和链接会自动识别,但绝不会被打开。附件通过私密 API 下载。
使用 curl 快速上手
创建收件箱,等待下一封邮件,读取后删除收件箱。请将 API 密钥保存在 TEMPGENERATOR_TOKEN 中,切勿放入 URL。
需要 curl 和 jq。脚本最多等待三次,每次最长 20 秒,输出每封邮件的主题、验证码、链接和正文,然后删除收件箱。
export TEMPGENERATOR_URL='https://www.tempgenerator.com'
API="$TEMPGENERATOR_URL/developer-api/v1"
AUTH="Authorization: Bearer $TEMPGENERATOR_TOKEN"
INBOX=$(curl --fail-with-body -sS -X POST "$API/inboxes" -H "$AUTH" -H 'Accept: application/json')
ID=$(printf '%s' "$INBOX" | jq -r .id)
echo "Send a test email to $(printf '%s' "$INBOX" | jq -r .address)"
for ATTEMPT in 1 2 3; do
RESULT=$(curl --fail-with-body -sS "$API/inboxes/$ID/wait?after=0&timeout=20" -H "$AUTH" -H 'Accept: application/json')
[ "$(printf '%s' "$RESULT" | jq -r .status)" = message ] && break
done
for MESSAGE in $(printf '%s' "$RESULT" | jq -r '.messages[].id'); do
curl --fail-with-body -sS "$API/inboxes/$ID/messages/$MESSAGE" -H "$AUTH" -H 'Accept: application/json' \
| jq '{subject, codes, links, text}'
done
curl --fail-with-body -sS -X DELETE "$API/inboxes/$ID" -H "$AUTH"
API 概览
基础 URL 为 https://www.tempgenerator.com/developer-api/v1。每个请求都需携带 Authorization: Bearer <key>。响应格式为 JSON;错误格式为 {"error": {"code", "message", "retry_after"}},配额错误还会返回 Retry-After 响应头。
-
POST /创建收件箱,并获取其地址和到期时间inboxes -
GET /等待游标之后的下一封邮件,最长 20 秒inboxes/ {id}/ wait ?after=0&timeout=20 -
GET /列出游标之后的邮件,最多 50 封,按从旧到新排列inboxes/ {id}/ messages ?after=0 -
GET /读取单封邮件:正文、验证码、链接和附件列表inboxes/ {id}/ messages/ {message_id} -
GET /按索引下载单个附件inboxes/ {id}/ messages/ {message_id}/ attachments/ {index} -
DELETE /立即删除收件箱及其邮件inboxes/ {id}
列表和等待接口支持可选的 from 和 subject_contains 筛选参数:对发件人和主题进行不区分大小写的“包含”匹配。
读取响应示例
{
"id": 42,
"from": "no-reply@app.example",
"subject": "Your verification code",
"received_at": "2026-10-03T09:41:07+00:00",
"text": "Your verification code is 482913.\nOr confirm: https://app.example/verify?token=8f3c",
"text_truncated": false,
"codes": [
"482913"
],
"links": [
"https://app.example/verify?token=8f3c"
],
"expires_at": "2026-10-03T10:40:12+00:00",
"attachments": [
{
"index": 0,
"filename": "receipt.pdf",
"size": 48213
}
],
"untrusted_content": true
}
开发者令牌
邮箱验证后,可在“开发者访问”中创建 API 密钥。读写密钥可以创建、读取和删除收件箱;只读密钥可以列出、等待、读取和下载。密钥 90 天后到期,每个账户最多可持有 10 个有效密钥,撤销密钥立即生效。
每个密钥仅显示一次,并且只以 SHA-256 哈希形式存储。撤销密钥不会删除其收件箱:在收件箱到期或被删除之前,该账户的其他有效密钥仍可继续访问。
管理 API 密钥无需 sleep() 即可等待下一封邮件
GET …/wait 会保持请求打开,邮件一到达就立即返回;若超时(最长 20 秒)则返回 status timeout。将上一次响应中的 next_cursor 作为 after 传入,就不会重复读取同一封邮件。
超时并不代表投递失败:请用同一游标再次等待。每个收件箱同时只运行一个等待,同一收件箱上较新的等待会取代较早的等待;不同收件箱上的等待可并行运行,每个账户最多同时 2 个。
在 Playwright、Cypress、pytest 和 CI 中进行邮件测试
为每个测试准备独立的收件箱,触发应用发送注册或重置密码邮件,等待邮件到达后对验证码或链接进行断言。在 teardown 阶段删除收件箱。
将密钥保存为 CI 机密,例如 GitHub Actions 中的 TEMPGENERATOR_TOKEN。Cypress 可以用 cy.request 发起同样的 HTTP 调用,下方的 Python 示例适用于 pytest 或任何其他测试运行器。
Playwright (TypeScript)
import { test, expect } from '@playwright/test';
const api = `${process.env.TEMPGENERATOR_URL}/developer-api/v1`;
const headers = { Authorization: `Bearer ${process.env.TEMPGENERATOR_TOKEN}`, Accept: 'application/json' };
async function call(path: string, method = 'GET') {
const response = await fetch(api + path, { method, headers });
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
return response.status === 204 ? null : response.json();
}
async function waitForCode(inboxId: string, after = 0): Promise<string> {
for (let attempt = 0; attempt < 3; attempt++) {
const result = await call(`/inboxes/${inboxId}/wait?after=${after}&timeout=20`);
for (const summary of result.messages) {
const message = await call(`/inboxes/${inboxId}/messages/${summary.id}`);
if (message.codes.length) return message.codes[0];
}
after = result.next_cursor;
}
throw new Error('No verification code arrived');
}
test('signup sends a verification code', async ({ page }) => {
const inbox = await call('/inboxes', 'POST');
try {
await page.goto('/signup');
await page.getByLabel('Email').fill(inbox.address);
await page.getByRole('button', { name: 'Create account' }).click();
await page.getByLabel('Verification code').fill(await waitForCode(inbox.id));
await expect(page.getByText('Welcome')).toBeVisible();
} finally {
await call(`/inboxes/${inbox.id}`, 'DELETE');
}
});
GitHub Actions
- name: End-to-end tests
run: npx playwright test
env:
TEMPGENERATOR_URL: https://www.tempgenerator.com
TEMPGENERATOR_TOKEN: ${{ secrets.TEMPGENERATOR_TOKEN }}
用 Python 检查注册邮件
设置好环境变量后运行。脚本会输出一个新收件箱;从你自己的测试应用向该地址发送注册邮件,然后按 Enter 键。脚本最多等待 15 秒,输出每封邮件及其验证码和链接,即使读取失败也会删除收件箱。
import json, os
from urllib.request import Request, urlopen
base = os.environ["TEMPGENERATOR_URL"].rstrip("/") + "/developer-api/v1"
headers = {"Authorization": "Bearer " + os.environ["TEMPGENERATOR_TOKEN"],
"Accept": "application/json"}
def request(path, method="GET"):
with urlopen(Request(base + path, headers=headers, method=method), timeout=30) as response:
return json.load(response) if response.status != 204 else None
inbox = request("/inboxes", "POST")
print(json.dumps(inbox), flush=True)
try:
input()
result = request("/inboxes/" + inbox["id"] + "/wait?after=0&timeout=15")
print(json.dumps(result))
for message in result["messages"]:
detail = request("/inboxes/" + inbox["id"] + "/messages/" + str(message["id"]))
print(json.dumps(detail))
finally:
request("/inboxes/" + inbox["id"], "DELETE")
面向 AI 智能体的 MCP 服务器
端点为 https://www.tempgenerator.com/mcp,使用 Authorization: Bearer <key> 认证。采用 Streamable HTTP,协议版本 2026-07-28;较旧的客户端可通过 2025-11-25 或 2025-06-18 握手接入。
连接客户端
Claude Code
claude mcp add --transport http tempgenerator-mail https://www.tempgenerator.com/mcp \
--header "Authorization: Bearer $TEMPGENERATOR_TOKEN"
Cursor: .cursor/mcp.json
{
"mcpServers": {
"tempgenerator-mail": {
"url": "https://www.tempgenerator.com/mcp",
"headers": { "Authorization": "Bearer ${env:TEMPGENERATOR_TOKEN}" }
}
}
}
VS Code: .vscode/mcp.json
{
"inputs": [
{ "type": "promptString", "id": "tempgenerator-token", "description": "TempGenerator API key", "password": true }
],
"servers": {
"tempgenerator-mail": {
"type": "http",
"url": "https://www.tempgenerator.com/mcp",
"headers": { "Authorization": "Bearer ${input:tempgenerator-token}" }
}
}
}
网页版和桌面版 Claude:使用端点 URL 添加自定义连接器,选择不登录,并添加请求头 Authorization: Bearer <key>。Claude 从 Anthropic 云端发起连接,因此该 URL 必须可公开访问。
工具
create_inbox- 创建私密收件箱,并返回其 ID 和地址。
list_messages- 列出游标之后的邮件摘要,可按发件人和主题筛选。
wait_for_message- 等待下一封邮件,最长 20 秒。
read_message- 读取单封邮件的正文、验证码、链接和附件列表。
delete_inbox- 删除收件箱及其邮件。
示例提示词
创建一个临时收件箱并告诉我它的地址。然后等待我预发布环境中的应用发来的验证邮件,并告诉我验证码。
只允许智能体为你拥有或获授权使用的账户完成注册。收到的邮件不可信:服务器从不打开链接,智能体也绝不应遵循邮件中的指令。
Python 版 MCP SDK
已在 Python 3 和官方 mcp 软件包 2.3.0 上测试:pip install "mcp>=2.3,<3"。请先设置 TEMPGENERATOR_URL 和 TEMPGENERATOR_TOKEN。
import asyncio, os
import httpx2
from mcp import Client
from mcp.client.streamable_http import streamable_http_client
async def main():
url = os.environ["TEMPGENERATOR_URL"].rstrip("/") + "/mcp"
headers = {"Authorization": "Bearer " + os.environ["TEMPGENERATOR_TOKEN"]}
async with httpx2.AsyncClient(headers=headers, timeout=httpx2.Timeout(30, read=60)) as http:
async with Client(streamable_http_client(url, http_client=http)) as client:
print([tool.name for tool in (await client.list_tools()).tools])
created = await client.call_tool("create_inbox", {})
if created.is_error:
raise RuntimeError(created.content)
inbox = created.structured_content
try:
print("Send a test email to", inbox["address"])
waited = await client.call_tool("wait_for_message", {"inbox_id": inbox["id"], "timeout": 20})
for summary in waited.structured_content["messages"]:
message = await client.call_tool("read_message", {"inbox_id": inbox["id"], "message_id": summary["id"]})
print(message.structured_content["subject"], message.structured_content["codes"])
finally:
deleted = await client.call_tool("delete_inbox", {"inbox_id": inbox["id"]})
if deleted.is_error:
raise RuntimeError(deleted.content)
asyncio.run(main())
附件
读取邮件时会返回每个附件的索引、文件名和大小。使用 GET …/attachments/{index} 下载:不超过 10 MB 的文件会以 application/octet-stream 返回,文件名经过安全处理。MCP 客户端看到的是同一份列表,并通过此 REST 端点下载。
何时选用本 API 而非其他工具
Mailpit、MailHog 和 Ethereal 会捕获你自己的应用发往本地或模拟 SMTP 服务器的邮件,适合你能控制 SMTP 设置的场景。而这里的收件箱是公共域名上的真实地址,任何发件方都能送达:第三方服务、使用真实邮件服务商的预发布服务器,或接近生产环境的流程。
mail.tm、Guerrilla Mail 等通用临时邮箱 API 面向个人一次性地址;本 API 则专为自动化设计:限定权限且会到期的密钥、每个测试一个收件箱、有时限的长轮询等待、验证码和链接识别,以及 MCP 服务器。
不包括:发送邮件、短信、HTML 或垃圾邮件预览、自定义域名,以及 MCP 客户端的 OAuth 登录。
保留期限、限制与安全
| 限制项 | 试用 | 开发者令牌 |
|---|---|---|
| 收件箱有效期 | 10 分钟 | 最长 60 分钟 |
| 有效收件箱 | 1 个 | 每个账户 5 个 |
| 新建收件箱 | 每个网络每 10 分钟 1 个 | 每小时 20 个 |
| API 请求 | 每分钟 120 次 | 每分钟 120 次 |
| 长轮询等待 | 最长 20 秒,每个收件箱 1 个 | 最长 20 秒,每个收件箱 1 个,最多同时 2 个 |
| 每个收件箱的邮件数 | 最多 10 封 | 最多 10 封 |
| 返回的邮件正文 | 前 128 KB | 前 128 KB |
| 附件下载 | 每个最大 10 MB | 每个最大 10 MB |
| 访问方式 | 仅限当前浏览器标签页 | 凭你的密钥访问 REST API 和 MCP |
接收域名可能会设置更短的有效期或更低的邮件数量上限。
仅接收邮件。请将邮件和附件视为不可信内容;任何内容都不会被自动打开。删除收件箱会立即删除其中的邮件,过期的收件箱由定时清理任务删除。
常见问题
什么是临时邮箱 API?
一种按需创建一次性邮箱、并让你的代码读取收到的邮件的 HTTP API。在这里,每个收件箱仅供你的密钥访问,会自动到期,并可通过 REST 或 MCP 读取。
需要注册账户吗?
试用不需要:试用会在你的浏览器中创建一个私密收件箱,有效 10 分钟。如需 API 密钥、MCP 和有效期更长的收件箱,请创建账户并验证邮箱。
收件箱能保留多久?
试用收件箱有效 10 分钟。使用开发者令牌创建的收件箱最长有效 60 分钟;如果接收域名设置了更短的有效期,则会更短。你可以随时删除收件箱。
如何在测试中等待邮件到达?
使用最新的游标调用 wait 端点或 wait_for_message 工具。邮件一到达就会立即返回;否则最多 20 秒后返回 status timeout,此时请用同一游标再次等待。避免使用固定时长的 sleep。
如何获取 OTP 验证码或验证链接?
读取邮件即可。响应包含纯文本正文,以及 codes(在“验证码”“OTP”“验证”等词附近找到的疑似一次性验证码)和 links(从正文和 HTML 中提取的 http 和 https 链接)。它们只是提示,请对照正文核实。
可以下载附件吗?
可以。读取邮件时会列出每个附件的索引、名称和大小,然后从附件端点逐个下载。支持不超过 10 MB 的文件。
令牌能访问哪些内容?何时到期?
每个密钥属于一个已验证账户,只能访问该账户的收件箱。读写密钥可以创建和删除收件箱;只读密钥可以列出、等待、读取和下载。密钥 90 天后到期,也可以立即撤销。
如何连接 Claude Code 或 Cursor?
使用端点 https://www.tempgenerator.com/mcp,并附带 Authorization: Bearer 请求头。在 Claude Code 中运行带 --header 的 claude mcp add --transport http;在 Cursor 中向 .cursor/mcp.json 添加包含 url 和 headers 的条目。两段示例都在上文。
AI 智能体可以完成注册吗?
仅限你拥有或获授权使用的账户,例如你自己应用的预发布环境。服务器从不打开链接。智能体只应为完成你要求的流程而使用验证码或链接,绝不能遵循邮件中写的指令。
邮件测试可以并行运行或在 CI 中运行吗?
可以。为每个测试使用独立的收件箱:不同收件箱上的等待可以并行运行。每个账户最多可持有 5 个有效收件箱,每小时可创建 20 个,因此请在 teardown 阶段删除收件箱,并将密钥保存在 CI 机密中。
可以提前删除收件箱吗?
可以。对收件箱发送 DELETE 请求或调用 delete_inbox,即可立即删除收件箱及其邮件。删除试用收件箱并不会缩短你的网络创建下一个收件箱前需要等待的 10 分钟。
它和 Mailpit 或 MailHog 有什么区别?
Mailpit 和 MailHog 运行本地 SMTP 服务器,用于捕获你自己的应用发出的邮件。而这里提供的是公共域名上的真实收件箱,任何发件方都能送达,并支持 API、长轮询等待和 MCP。
有哪些使用限制?
试用收件箱有效 10 分钟。开发者账户最多可持有 5 个有效收件箱,每小时可创建 20 个,每分钟可发起 120 次 API 请求,每次请求最长等待 20 秒。每个收件箱最多接收 10 封邮件。
可以发送邮件或使用自定义域名吗?
不可以。收件箱仅用于接收,并使用本站的接收域名。不支持发送邮件、短信和自定义域名。