Cloudflare Worker + KV 存储 OpenAI 注册
本方案通过 Cloudflare Worker + KV 存储,将 OpenAI 的注册验证码自动提取并伪装成标准的 Inbucket API 格式,供注册脚本调用。
第一步:配置 KV 存储
KV 用于临时存放从邮件中提取的验证码。
登录 Cloudflare 控制台。
进入 存储与数据库 (Storage & Databases) -> KV。
点击 创建命名空间 (Create Namespace)。
名字建议设为 OAI\_MAIL。
第二步:部署邮件处理 Worker
创建一个 Worker 来处理邮件接收逻辑与脚本的查询请求。
创建一个新的 Worker(例如命名为 mail-handler)。
粘贴以下完整代码:
export default {
// 1. 处理接收到的邮件 (Email Routing)
async email(message, env, ctx) {
const reader = message.raw.getReader();
const decoder = new TextDecoder("utf-8");
let rawEmail = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
rawEmail += decoder.decode(value, { stream: true });
}
const recipient = message.to;
// 正则提取 6 位验证码
const codeMatch = rawEmail.match(/(?<!\d)(\d{6})(?!\d)/);
if (codeMatch) {
const code = codeMatch[1];
// 将验证码存入 KV,过期时间设为 10 分钟 (600秒)
await env.OAI_MAIL.put(recipient, code, { expirationTtl: 600 });
console.log(`[Email] 已保存验证码: ${code} 到邮箱: ${recipient}`);
}
},
// 2. 处理脚本的 HTTP 查询请求 (fetch)
async fetch(request, env) {
const url = new URL(request.url);
const path = url.pathname;
// 从 /api/v1/mailbox/{identifier} 中提取 identifier
let identifier = path.split('/').pop();
// 过滤掉无效请求
if (!identifier || identifier === 'v1' || identifier === 'mailbox') {
return new Response("[]", { headers: { "Content-Type": "application/json" } });
}
// --- 核心查找逻辑 ---
let code = await env.OAI_MAIL.get(identifier);
if (!code && !identifier.includes('@')) {
// 如果脚本查询时不带后缀,自动补全域名后缀去 KV 查找 (请确保与 pool_config.yaml 一致)
code = await env.OAI_MAIL.get(`${identifier}@311234.xyz`);
}
if (code) {
const now = Date.now();
// 构造脚本 codex_reg_and_login.py 能够 100% 识别的 JSON 结构
const result = {
"id": "cf-" + now,
"posix-millis": now, // 脚本用于排序最新邮件
"from": "no-reply@openai.com",
"subject": `OpenAI Verification Code ${code}`, // 主题必须含 openai 关键词
"date": new Date().toISOString(),
"body": {
"text": `Your OpenAI code is ${code}`,
"html": `Code: <b>${code}</b>`
},
"text": `${code}`
};
return new Response(JSON.stringify([result]), {
headers: {
"Content-Type": "application/json; charset=utf-8",
"Access-Control-Allow-Origin": "*"
}
});
}
return new Response("[]", {
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
}
});
}
};关键配置(必做):
在 Worker 的 绑定 中 找到 KV 命名空间绑定 (KV Namespace Bindings) 添加绑定。
添加绑定:变量名称 必须填 OAI\_MAIL,KV 命名空间 选择你刚才创建的 OAI\_MAIL。
第三步:设置邮件路由
将所有发往您域名的邮件转发给该 Worker 处理。
进入 Cloudflare 菜单中的 电子邮件 (Email) -> 电子邮件路由 (Email Routing)。
进入 路由规则 (Routing Rules) 标签页。
在 Catch-all address 部分,点击 编辑 (Edit):
状态 (Status): 已启用 (Enabled)。
操作 (Action): 发送到 Worker (Send to Worker)。
目的地 (Destination): 选择您刚才创建的 mail-handler。
第四步:修改脚本配置 pool\_config.yaml
调整本地脚本设置,确保生成的邮箱域名与接收地址匹配。
email_domains:
- "example.com"
# 2. 接口配置:将 Worker 的访问地址填入 mail_api
# 注意:结尾不要加斜杠
mail_api: "https://mail-handler.your-subdomain.workers.dev"