Skip to main content
Benny的老巢 Logo
Overview

Cloudflare Workers 实现 Resend 邮件发送接口

January 8, 2026
2 min read

完全可以,而且非常适合用 Cloudflare Workers 来实现这个需求。这个场景 100% 命中 Workers 的最佳使用场景。

需求拆解 & 可行性评估

你的需求是

  1. 前端页面点击「提交联系方式」

  2. 调用 Cloudflare Workers 提供的 API

  3. 传递字段:

    • 邮箱
    • 用户名
    • 手机号
    • 留言内容
  4. Workers 收到数据

  5. 调用 Resend Email API

  6. 把用户信息发送到指定邮箱

Workers 能否做到?

环节是否支持说明
HTTP API 接口原生支持 fetch
POST JSON 数据request.json()
调用第三方 APIfetch()
设置 API KeySecret 环境变量
CORS 支持手动设置 Header
性能 / 稳定性全球边缘
成本非常低

这是一个”教科书级适合 Workers 的业务”。

推荐的整体架构

[前端页面]
|
| POST /api/contact
|
[Cloudflare Worker]
|
| 调用 Resend API
|
[目标邮箱]
  • 无服务器
  • 无数据库(可选)
  • 高安全性
  • 几乎零运维

关键安全点

绝对不能

  • 在前端直接调用 Resend API
  • 在前端暴露 Resend API Key

正确做法

  • Resend API Key 存在 Worker 的 Secret 中
  • 前端只请求 Worker
Terminal window
wrangler secret put RESEND_API_KEY

Workers 是否会被 Resend 限制?

Resend 官方支持:

  • Edge Runtime
  • fetch API
  • Node / Bun / Workers

完全兼容 Cloudflare Workers。

完整实现方案

Worker API 示例

export default {
async fetch(request, env) {
if (request.method !== 'POST') {
return new Response('Method Not Allowed', { status: 405 })
}
const body = await request.json()
const { email, name, phone, message } = body
// 简单校验
if (!email || !name || !message) {
return new Response(
JSON.stringify({ error: 'Missing required fields' }),
{ status: 400 }
)
}
const res = await fetch('https://api.resend.com/emails', {
method: 'POST',
headers: {
'Authorization': `Bearer ${env.RESEND_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
from: 'Contact Form <[email protected]>',
subject: '新的用户留言',
html: `
<h3>新的用户提交</h3>
<p><b>姓名:</b>${name}</p>
<p><b>邮箱:</b>${email}</p>
<p><b>手机号:</b>${phone || '-'}</p>
<p><b>留言:</b>${message}</p>
`
})
})
if (!res.ok) {
const err = await res.text()
return new Response(err, { status: 500 })
}
return new Response(
JSON.stringify({ success: true }),
{ headers: { 'Content-Type': 'application/json' } }
)
}
}

前端调用示例

await fetch('https://your-worker.workers.dev/api/contact', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Tom',
phone: '123456789',
message: '我想了解下你们的服务'
})
})

进阶建议

CORS 限制

只允许你的域名调用:

headers: {
'Access-Control-Allow-Origin': 'https://your-site.com'
}

防垃圾提交(强烈建议)

方案是否适合
Cloudflare Turnstile⭐⭐⭐⭐⭐
请求频率限制⭐⭐⭐⭐
Honeypot 字段⭐⭐⭐

防刷接口

  • 根据 IP 限制
  • 1 分钟最多 N 次

可选:落库(审计用)

如果你后期想保存记录:

  • D1(SQLite)
  • KV(轻量)

是否有”坑”?

需要注意的地方:

  1. 邮件 From 域名要在 Resend 验证
  2. Worker 默认不能用 nodemailer(但你用不上)
  3. HTML 要自己拼(或模板)

都不是问题级别。

最终结论

你的需求非常适合 Cloudflare Workers + Resend。稳定、便宜、安全、可扩展,没有任何架构风险。