
cloudflare_temp_email 增强指南通过 Worker RPC 服务绑定接入 auth-inbox 实现验证码解析【免费下载链接】cloudflare_temp_emailCloudFlare free temp domain email 免费收发 临时域名邮箱 支持附件 IMAP SMTP TelegramBot项目地址: https://gitcode.com/GitHub_Trending/cl/cloudflare_temp_email临时邮箱的核心价值在于邮件管理而验证码、激活链接的自动提取可以进一步提升使用效率。本文讲解如何在 cloudflare_temp_email 中开启其他 Worker 增强功能先创建一个继承WorkerEntrypoint、暴露 RPC 方法的 Worker再通过服务绑定Service Binding与环境变量配置完成接入让临时邮箱在收到邮件后自动调用该 Worker 解析验证码或激活链接。读完本文你将掌握 RPC 风格 Worker 的改造方法、ENABLE_ANOTHER_WORKER与ANOTHER_WORKER_LIST的完整配置以及邮件触发链路的底层实现原理。功能定位在邮件处理流水线中挂载外部 Worker通过其他 Worker 增强是 cloudflare_temp_email 提供的一种扩展机制当临时邮箱收到邮件并完成存储、转发、Webhook 等常规处理后将邮件内容转交给一个由你自己创建并部署的第三方 Worker由它基于 AI 或其他能力完成验证码提取、链接解析等二次加工。该功能有几个关键约束源自 worker/src/email/index.ts 的调用时序仅在 Webhook 之后执行从email()处理函数可见触发顺序为存储邮件 → 转发 → AI 提取 → Telegram 推送 → Webhook →触发其他 Worker→ 自动回复因此本功能适合做增强而非核心存储链路只触发不等待结果cloudflare_temp_email 以调用 RPC 方法的方式把数据推送给外部 Worker并不依赖其返回值继续处理默认关闭需要同时开启环境变量开关并配置 Worker 列表后才会生效基于 Cloudflare Worker RPC调用方通过服务绑定Service Bindings直接调用目标 Worker 上暴露的 RPC 方法无需额外 HTTP 接口与鉴权配置。官方文档对 RPC 的底层说明可参考 Cloudflare 的 Service Bindings RPC 文档/workers/runtime-apis/bindings/service-bindings/rpc/与 Runtime RPC 文档/workers/runtime-apis/rpc/。本文以auth-inbox 项目TooonyChen/AuthInbox的 AI 解析验证码能力作为实战例子。第一步创建被调用的 Worker改造为 WorkerEntrypoint 风格要作为 RPC 被调用方你的 Worker 必须继承 Cloudflare 的WorkerEntrypoint基类而不是默认的export default { fetch() {...} }对象导出风格。二者的区别在于WorkerEntrypoint风格下类实例天然持有this.env绑定与环境变量和this.ctx执行上下文fetch方法也只有一个request入参。以 worker/src/types.d.ts 中定义的AnotherWorker与RPCEmailMessage为参照被调用方接收的请求体数据结构如下type RPCEmailMessage { from: string | undefined | null, // 发件人地址 to: string | undefined | null, // 收件人地址临时邮箱地址 rawEmail: string | undefined | null, // 原始邮件全文 headers: object | undefined | null, // 邮件头键值对 }下面是文档给出的完整改造示例src/index.ts同时保留了 Email Routing 入口与新增的 RPC 方法import { WorkerEntrypoint } from cloudflare:workers; interface Env { DB: D1Database; // ... } export default class extends WorkerEntrypointEnv { async fetch(request: Request): PromiseResponse { console.log(原本fetch接口入参是request,env,ctx); console.log(修改为WorkerEntrypoint风格后只有一个入参request获取环境变量和上下文有小改动); // 环境变量及上下文改动详见 // https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/#bindings-env // https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/#lifecycle-methods-ctx const env: Env this.env; const ctx: ExecutionContext this.ctx; console.log(后续逻辑不变); return new Response(ok, { status: 200 }); } // 主要功能 async email(message: ForwardableEmailMessage): Promisevoid { console.log(原本fetch接口入参是message,env,ctx); console.log(修改为WorkerEntrypoint风格后只有一个入参message获取环境变量和上下文和fetch方法一样); const env: Env this.env; const ctx: ExecutionContext this.ctx; console.log(接受email routing请求后后续逻辑不变); } // 暴露rpc接口处理来自其他worker的邮件请求 async rpcEmail(requestBody: string): Promisevoid { console.log(接受其他worker临时邮件服务cloudflare_temp_email的请求request body: ${requestBody}); // requestBody json 格式由临时邮件服务发送格式如下 // type RPCEmailMessage { // from: string | undefined | null, // to: string | undefined | null, // rawEmail: string | undefined | null, // headers: Mapstring, string, // } // ... todo ...在此实现 AI 解析验证码、存储到面板等业务逻辑 } }要点说明rpcEmail是示例方法名实际方法名可以自定义只要与后续ANOTHER_WORKER_LIST中的method字段保持一致即可被调用方接收的requestBody是JSON 字符串。从源码 worker/src/common.ts 可以看到调用方在发送前会把RPCEmailMessage序列化为 JSON并且如果headers是Map结构会先转换为普通对象再序列化如果你不想手工改造文档提供了已经改造好的 fork 项目oneisall8955/AuthInbox-fork可直接部署。第二步部署被调用的 Worker修改完成或直接使用 fork 项目后将 Worker 部署到 Cloudflare。部署过程与普通 Worker 一致使用wrangler deploy或wrangler pages deploy上传部署成功后记下Worker 名称service 名称例如auth-inbox下一步配置服务绑定时会用到。部署细节可参考 auth-inbox 原项目TooonyChen/AuthInbox的说明。本步骤的关键产物是一个已部署、可被 RPC 调用的 Worker 及其 service 名称。第三步配置临时邮件服务 —— 绑定服务要让 cloudflare_temp_email 能调用你的 Worker需要在它的配置里声明一个服务绑定Service Binding。服务绑定的作用是把目标 Worker 的 RPC 接口以命名变量的形式注入当前 Worker 的环境。方式一通过 wrangler.toml 配置在 cloudflare_temp_email 的wrangler.toml参考 worker/wrangler.toml.template 的注释模板中追加[[services]] binding AUTH_INBOX service auth-inbox字段说明binding AUTH_INBOX可自定义可以是任意字符串。它将成为当前 Worker 环境中的一个变量名也是后续ANOTHER_WORKER_LIST中binding字段的取值两者必须严格一致service auth-inbox上一步部署好的、提供 RPC 接口调用的 Worker 名称。方式二Cloudflare 控制台界面配置如果使用 Cloudflare Dashboard 而不是 wrangler.toml操作路径为进入 cloudflare_temp_email Worker 的设置Settings页找到绑定Bindings点击添加绑定绑定类型选择服务绑定Service Binding变量名称填写自定义名称例如AUTH_INBOX服务选择上一步创建好的 Worker 服务例如auth-inbox。第四步配置环境变量 —— 开关与 Worker 列表服务绑定声明了能调用谁环境变量则声明何时调用、调用哪个方法。需要配置两个环境变量ENABLE_ANOTHER_WORKER总开关与ANOTHER_WORKER_LISTWorker 列表。方式一通过 wrangler.toml 配置参考 worker/wrangler.toml.template 的模板ENABLE_ANOTHER_WORKER true ANOTHER_WORKER_LIST [ { binding:AUTH_INBOX, method:rpcEmail, keywords:[ 验证码,激活码,激活链接,确认链接,验证邮箱,确认邮件,账号激活,邮件验证,账户确认,安全码,认证码,安全验证,登陆码,确认码,启用账户,激活账户,账号验证,注册确认, account,activation,verify,verification,activate,confirmation,email,code,validate,registration,login,code,expire,confirm ] } ] 方式二Cloudflare 控制台界面配置在设置 → 环境变量中添加ENABLE_ANOTHER_WORKER trueANOTHER_WORKER_LIST为上面提及的 JSON 数组字符串内容同上不再复述。环境变量语义详解对照 worker/src/types.d.ts 的类型定义和 worker/src/utils.ts 的解析逻辑字段必填默认值说明ENABLE_ANOTHER_WORKER否false总开关设为true才启用其他 Worker 处理邮件能力。源码中通过getBooleanValue解析true/true均视为开启ANOTHER_WORKER_LIST.binding必填无必须与 services 部分指定的binding XXX保持一致示例为AUTH_INBOX。源码通过(c.env as any)[bindingName]动态获取该服务绑定ANOTHER_WORKER_LIST.method可选rpcEmail调用该 Worker 的哪一个 RPC 方法处理邮件ANOTHER_WORKER_LIST.keywords可选空数组关键词数组忽略大小写。解析后的邮件文本匹配到任一关键词即触发该 Worker 并调用其method方法其中ANOTHER_WORKER_LIST本身是 JSON 数组字符串但类型定义为string | AnotherWorker[]说明在 Dashboard 中以JSON 配置形式绑定时也可以直接以数组对象传入当以字符串形式提供时源码会先尝试JSON.parse解析解析失败则打印错误并回退为空列表见 worker/src/utils.ts。源码级原理triggerAnotherWorker 的完整调用链为了确认这套配置的落地行为可以直接阅读 worker/src/common.ts 中的triggerAnotherWorker实现。它的处理流程如下提前短路如果解析出的邮件纯文本为空、ENABLE_ANOTHER_WORKER为 false、或 Worker 列表为空直接返回不产生任何调用小写化匹配将解析后的邮件文本toLowerCase()关键词数组同样在比较时小写化实现忽略大小写过滤动态取服务通过(c.env as any)[bindingName]拿到服务绑定对象再取methodName对应的方法若方法不存在或不是函数打印日志并跳过该 Worker见第 947-950 行关键词过滤只有keywords中任一关键词出现在邮件文本中才继续调用第 952 行序列化与调用将RPCEmailMessage展开为普通对象若headers是Map则先forEach转成普通对象再JSON.stringify得到requestBody字符串最终await method(requestBody)完成 RPC 调用第 956-967 行。值得注意的是邮件触发前的关键一步是解析邮件文本在 worker/src/email/index.ts 中会先通过commonParseMail(parsedEmailContext)解析出纯文本parsedText再组装RPCEmailMessagefrom、to、rawEmail、headers并调用triggerAnotherWorker。也就是说关键词匹配的是解析后的邮件正文文本而不是原始邮件全文这与文档中的说明一致。此外从 worker/src/admin_api/worker_config.ts 可以看到ENABLE_ANOTHER_WORKER与ANOTHER_WORKER_LIST会被暴露到管理后台的 Worker 配置接口中方便在管理面板统一查看当前开关状态与 Worker 列表。第五步测试验证配置完成后发送一封邮件到临时邮箱验证方式有两种观察 Worker 日志在 cloudflare_temp_email 的实时日志中可以看到类似exec worker , binding AUTH_INBOX , requestBody {...}的日志来自 worker/src/common.ts表明 RPC 调用已触发查看 auth-inbox 面板如果验证码被成功解析auth-inbox 提供的面板上会展示提取出的验证码或激活链接。若日志中没有出现触发记录请按顺序排查ENABLE_ANOTHER_WORKER是否确实为trueANOTHER_WORKER_LIST中binding与 wrangler.toml / 控制台的binding是否完全一致目标 Worker 的方法名与method字段是否一致且该方法是否以WorkerEntrypoint类方法形式暴露这是 RPC 调用的前提邮件正文是否命中了keywords中的关键词匹配目标是解析后的邮件文本忽略大小写。小结通过 Worker RPC Service Bindingcloudflare_temp_email 将邮件处理链路开放给了任意第三方 Worker你只需要把目标 Worker 改造成WorkerEntrypoint风格并暴露 RPC 方法再在临时邮箱侧完成服务绑定与ENABLE_ANOTHER_WORKER/ANOTHER_WORKER_LIST两项配置即可让验证码/激活链接自动解析这类增强能力随邮件到达自动触发。该机制同样适用于接入其他具备 AI 解析、消息通知等能力的 Worker为临时邮箱生态提供了低成本、高内聚的扩展方式。【免费下载链接】cloudflare_temp_emailCloudFlare free temp domain email 免费收发 临时域名邮箱 支持附件 IMAP SMTP TelegramBot项目地址: https://gitcode.com/GitHub_Trending/cl/cloudflare_temp_email创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考