使用 Cloudflare Email Routing 将表单数据发送到邮箱

不开发后端,不使用第三方邮件转发服务,使用 Cloudflare 的 Workers 和 Email Routing,免费地将静态网站上的表单数据发送到邮箱。

最近在做一个静态站,需要在网站上放置一个表单,让用户提交接洽请求。但不想写后端,更不想为此维护一个数据库。秉承数据尽可能少地经过第三方地原则,放弃使用第三方邮件转发服务。后来无意中看到了 Cloudflare Email Routing,它不需要你搭建邮箱服务器,让你可以创建自定义电子邮件地址,并将收到的电子邮件转发到你的私人邮箱。

真的要感谢 Cloudflare ,慷慨地提供了多种免费服务,Email Routing 是免费的,Workers 的免费版本也足够用了,而且我的静态站也是托管在 Cloudflare Page 上的,简直完美。

本文使用的 Cloudflare Workers 代码已开源, 仓库地址:https://github.com/WongSaang/CF-Postal-Worker, 渴望你的 Star。

前提条件

  • 一个 Cloudflare 账户
  • 一个域名,可以在 Cloudflare 上注册一个最便宜的域名即可
  • 本地 Node.js 环境

启用 Email Routing

如果你的域名是在第三方平台上注册的,需要将域名的 DNS 服务器切换到 Cloudflare 上。登录 Cloudflare Dashboard 后,点击首页的“添加站点” 按钮,按指引走就可以。

按照官方文档 Enable Email Routing 的指引,启用 Email Routing。

部署 Workers 应用

  1. 克隆/下载项目 https://github.com/WongSaang/CF-Postal-Worker.git

  2. 将文件 wrangler.toml.example 重命名为 wrangler.toml,设置以下环境变量:

1
2
3
4
SENDER_ADDRESS = "[email protected]" # 改成你在 Email Routing 中设置的邮箱地址一致
SENDER_NAME = "Sender" # 发件人名称
RECIPIENT_ADDRESS = "[email protected]" # 改成你的收件邮箱地址
ALLOWED_ORIGINS = "https://example.com" # 允许调用 API 的站点域名,多个域名用逗号分隔, "*" 表示允许所有域名。
  1. 部署到 Cloudflare Workers
1
2
npm install
npm run deploy

完成!现在你可以在你的静态站上调用 Worker 的 API 了。

API

发送邮件的 API 地址是 你的worker域名/send

调用示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
fetch('https://example.workers.dev/send', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    subject: '邮件主题',
    body: '<h1>邮件内容</h1>'
  })
})
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy