CloudFlare免费收发邮件服务

CloudFlare免费邮局,无需服务器,可以收邮件和发邮件
项目地址:https://github.com/dreamhunter2333/cloudflare_temp_email
官方文档:https://temp-mail-docs.awsl.uk/
博主自己搭建的演示站:https://mail.cookieadd.me

安装前工作

CloudFlare账号一枚
托管在CloudFlare的域名一枚,本博客教程使用的演示域名:cookieadd.me
(MJJ们应该都有一枚域名的吧?)

一、后端部署

(1)创建D1数据库和KV

  • 在works和pages中选D1数据库
  • 创建数据库起名字dev
    d1
  • 创建后进入到dev数据库,然后打开控制台
  • schema.sql文件中的内容复制到命令行中,然后点击执行按钮
  • 数据库创建完成
    sql1
    sql2
    sql3
  • 在works和pages中选KV
  • 创建KV起名字dev
    kv1

(2)后端程序部署

  • 还是在works和pages中,创建应用程序,选workers
  • 起名字mail-api,保存,然后点右下角部署
    hd1
    hd2
  • 然后界面中右上角点“编辑代码”
  • 然后再左边点击文件按钮,右键点works.js然后删除
    hd3
  • 再下载works.js
  • 右键点击,出现上传,把下载的works.js上传上去,然后右上角部署
    hd4
  • 再来到项目的“设置”–>“变量”中,添加变量
    hd5
  • 先添加这三个基础变量(添加完成记得点部署)
    1
    2
    3
    4
    ADMIN_PASSWORDS = ["123456"]    # 后台管理地址
    DOMAINS = ["cookieadd.me"] # 你的域名
    JWT_SECRET =["xxxyyyzzz"] # 随便取一个变量,用于生成 jwt 的密钥, jwt 用于给用户登录以及鉴权
    ENABLE_USER_CREATE_EMAIL = true # 允许游客创建邮箱
    hd6
  • 还是在变量这边,绑定D1数据库和KV
  • KV的变量名称需写“KV”大写,然后命名空间选择我们刚刚创建的dev
  • D1的变量名称需写“DB”大写,然后数据库选择我们刚刚创建的dev
    kv2
    d12
  • 绑定自己的域名,来到“触发器”这里添加自定义域名,我以mail-api.cookieadd.me为例
    ym1
  • 后端验证,访问https://mail-api.cookieadd.me/health_check,返回结果是OK就可以
    hd7

二、前端部署

  • 先来到作者的官方文档中,点击这里生成配置文件
  • 在该页面中的地址栏输入后端的域名的https地址,比如我使用的后端地址是https://mail-api.cookieadd.me
  • 生成配置,下载得到一个frontend.zip文件
    qd1
    qd2
  • 回到CloudFlare还是在works和pages中
  • 创建应用程序,选Pages,选择“使用直接上传创建”,然后再选择“上传资产”按钮
  • 项目名取“mail”创建项目,再点击“从计算机中选择”上传刚刚下载的frontend.zip文件
  • 上传成功点击“部署站点”
    qd3
    qd4
    qd5
    qd6
  • 添加自定义域名
    qd7

三、设置邮件路由

  • 回到CloudFlare面板首页,然后选择需要使用的域名进入,cookieadd.me
  • 左边菜单选择“电子邮件”,点击开始使用,先跳过指南
  • 再点击“启用电子邮件路由”,添加解析
  • 选择“路由规则”,编辑Catch-all地址,操作选发送到Worker,目标选择我们的后端的Worker保存
  • Catch-all地址的状态开关需要打开(如果无法打开请到“目标地址”添加一个自己能正常收件的邮箱)
  • 截至目前我们的收件功能已完成,
    dz1
    dz2
    dz3
    dz4
    dz5
    dz6
    dz7

四、发件功能

  • 发件需要借助Resend,注册一个Resend账号
  • 绑定自己的邮箱域名
  • 然后在API-Key中创建一个api,全部权限,然后把密码拷贝保存
    fj1
    fj2
    fj3
    fj4
    fj5
    fj6
  • 到后端的Worker中设置–>变量–>添加一个变量
    RESEND_TOKEN = re_XhiUoBtX_PUswPAwbaFvyqyk5jqptLkjt(上一步拷贝出来的密码)
    fj7

截止到以上步骤,就可以完整的收发邮件了

管理后台地址:https://mail.cookieadd.me/admin

密码是变量ADMIN_PASSWORDS中设置的123456

进阶玩法

(1)Telegram机器人通知收件信息

  • 创建机器人(具体方法自己搜)
  • 拿到用于这个项目的机器人token,还有telegram的账户id
  • 到后端的Worker中设置–>变量–>添加一个变量
    TELEGRAM_BOT_TOKEN = 机器人token
  • 在邮件的管理后台,机器人中填入账户id

官方变量说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# TITLE = "Custom Title" # 自定义网站标题
PREFIX = "tmp" # 要处理的邮箱名称前缀,不需要后缀可配置为空字符串
# 如果你想要你的网站私有,取消下面的注释,并修改密码
# PASSWORDS = ["123", "456"]
# admin 控制台密码, 不配置则不允许访问控制台
# ADMIN_PASSWORDS = ["123", "456"]
# admin 联系方式,不配置则不显示,可配置任意字符串
# ADMIN_CONTACT = "xx@xx.xxx"
DOMAINS = ["xxx.xxx1" , "xxx.xxx2"] # 你的域名, 支持多个域名
JWT_SECRET = "xxx" # 用于生成 jwt 的密钥, jwt 用于给用户登录以及鉴权
BLACK_LIST = "" # 黑名单,用于过滤发件人,逗号分隔
# 是否允许用户创建邮件, 不配置则不允许
ENABLE_USER_CREATE_EMAIL = true
# 允许用户删除邮件, 不配置则不允许
ENABLE_USER_DELETE_EMAIL = true
# 允许自动回复邮件
ENABLE_AUTO_REPLY = false
# 是否启用 webhook
# ENABLE_WEBHOOK = true
# 前端界面页脚文本
# COPYRIGHT = "Dream Hunter"
# 默认发送邮件余额,如果不设置,将为 0
# DEFAULT_SEND_BALANCE = 1
# Turnstile 人机验证配置
# CF_TURNSTILE_SITE_KEY = ""
# CF_TURNSTILE_SECRET_KEY = ""
# dkim config
# DKIM_SELECTOR = "mailchannels" # 参考 DKIM 部分 mailchannels._domainkey 的 mailchannels
# DKIM_PRIVATE_KEY = "" # 参考 DKIM 部分 priv_key.txt 的内容
# telegram bot 最多绑定邮箱数量
# TG_MAX_ACCOUNTS = 5
# 全局转发地址列表,如果不配置则不启用,启用后所有邮件都会转发到列表中的地址
# FORWARD_ADDRESS_LIST = ["xxx@xxx.com"]

本文借鉴于:https://www.milaone.com/archives/79.html