用 API Key 免登录拉取指定邮箱的邮件,适合脚本自动获取验证码、集成到其他系统。
登录后台 → 系统设置 → 对外 API → 点「生成 API Key」。
- 生成后会显示完整 Key 和调用示例,点「复制」即可。
- 「重新生成」会让旧 Key 立即失效;「停用」会关闭整个对外 API。
- Key 是明文存放在你自己的 D1 里,只有后台登录后能看到。
GET /api/external/emails
鉴权(二选一):
- 请求头:
X-API-Key: <你的Key> - 或查询参数:
?key=<你的Key>
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
email |
✅ | 要查询的邮箱地址(必须是后台已添加的账号) |
folder |
❌ | inbox(默认) / junkemail / deleteditems / all(收件箱+垃圾箱合并) |
top |
❌ | 返回条数,默认 10,最大 50 |
keyword |
❌ | 搜索关键词 |
includeBody |
❌ | 传 1 时每封邮件额外返回 body 字段(完整纯文本正文,不截断) |
关于
bodyPreview截断:bodyPreview是 Microsoft Graph 固定截断到 255 字符的预览字段,无法配置成不截断。需要完整正文时请加includeBody=1,从返回的body字段取(响应体会相应变大,建议配合较小的top使用)。
浏览器 / curl(查询参数方式)
curl "https://你的域名/api/external/emails?email=abc@outlook.com&key=你的Key&folder=all&top=5"请求头方式(更安全,Key 不出现在 URL / 日志里)
curl "https://你的域名/api/external/emails?email=abc@outlook.com" \
-H "X-API-Key: 你的Key"取完整正文(不截断,验证测试方法)
# 只取最新 1 封并带完整正文;对比 bodyPreview(最多 255 字符)与 body(完整)
curl "https://你的域名/api/external/emails?email=abc@outlook.com&top=1&includeBody=1" \
-H "X-API-Key: 你的Key"预期:返回的每个 item 里同时有 bodyPreview(预览,≤255 字符)和 body(完整纯文本正文);不传 includeBody 时没有 body 字段。
Python(取最新验证码的典型用法)
import re, requests
resp = requests.get(
"https://你的域名/api/external/emails",
params={"email": "abc@outlook.com", "folder": "all", "top": 5},
headers={"X-API-Key": "你的Key"},
)
data = resp.json()
for mail in data["data"]["items"]:
# 从主题或正文预览里提取 6 位数字验证码
m = re.search(r"\b(\d{6})\b", mail["subject"] + " " + mail["bodyPreview"])
if m:
print("验证码:", m.group(1))
break成功(HTTP 200):
{
"success": true,
"data": {
"email": "abc@outlook.com",
"folder": "all",
"count": 2,
"items": [
{
"id": "AAQ...",
"subject": "Your verification code is 123456",
"from": { "name": "Microsoft", "address": "account@microsoft.com" },
"receivedDateTime": "2026-06-08T08:00:00Z",
"bodyPreview": "Use code 123456 to sign in...",
"isRead": false
}
]
}
}加
includeBody=1时,每个 item 会多一个"body": "完整纯文本正文..."字段。
失败:
{ "success": false, "error": { "code": "UNAUTHORIZED", "message": "API Key 无效" } }| HTTP | code | 含义 |
|---|---|---|
| 403 | API_DISABLED |
还没生成 API Key(去系统设置生成) |
| 401 | UNAUTHORIZED |
Key 缺失或不正确 |
| 400 | BAD_REQUEST |
缺少 email 参数 |
| 404 | NOT_FOUND |
该邮箱不在后台账号列表里 |
| 400 | DISABLED |
该账号已被停用 |
| 502 | TOKEN_FAILED |
该账号 Token 失效,需在后台「重新授权」 |
| 502 | GRAPH_ERROR |
调用 Microsoft Graph 失败 |
- Key 等同于这些邮箱的读取权限,不要写进前端代码或公开仓库;优先用
X-API-Key请求头而非 URL 参数(URL 会进日志/历史记录)。 - 怀疑泄露时,到系统设置点「重新生成」即可让旧 Key 立即作废。
- 接口只能读取后台已添加的邮箱,无法访问任意邮箱。