glownight

返回

Cloudflare Email Routing + Worker#


架构#

收到邮件 → Email Routing → 触发 Worker → 自定义处理

           转发/丢弃/回复/存储/调用API
plaintext

1. Email Routing 配置#

Cloudflare Dashboard → Email → Email Routing

Catch-all 地址: *@yourdomain.com → 转发到 Worker
plaintext

2. Worker 接收邮件#

// worker.js
export default {
  async email(message, env, ctx) {
    // message: 邮件对象
    const {
      from,      // 发件人
      to,        // 收件人
      headers,   // 原始头
      raw,       // 原始内容
      rawSize,   // 大小
    } = message;

    // 读取内容
    const text = await message.text();
    const html = await message.html();

    // 处理逻辑
    if (text.includes('验证码')) {
      await env.DB.prepare('INSERT INTO codes (email, code) VALUES (?, ?)')
        .bind(from, extractCode(text)).run();
    }

    // 转发到 Gmail
    await message.forward('backup@gmail.com');
    
    // 或回复
    await message.reply({
      from: 'bot@yourdomain.com',
      subject: 'Re: ' + message.headers.get('subject'),
      text: '收到,处理中...',
    });
  }
};
javascript

3. wrangler.toml 配置#

name = "email-worker"
main = "worker.js"

[[email]]
name = "catch-all"
destination = "worker"

# 绑定存储
[[d1_databases]]
binding = "DB"
database_name = "emails"
database_id = "xxx"
toml

典型场景#

场景代码
自动回复message.reply({...})
过滤垃圾if (spamCheck(raw)) message.setReject('Spam')
提取数据await message.text() 正则匹配
存储归档await env.R2.put(key, raw)
触发 webhookfetch('https://api.com/notify', {body: json})

总结#

Email Routing 收邮件 → Worker 写代码处理 → 转发/回复/存存储/调API,无服务器邮件自动化。

Cloudflare Email Routing + Worker
作者 glownight
发布于 2026年1月19日