Skip to content

Latest commit

 

History

History
120 lines (82 loc) · 4.7 KB

send-tutorial.md

File metadata and controls

120 lines (82 loc) · 4.7 KB

发送邮件部署教程

准备工作

  • 继续使用收件教程中托管到 cf 的域名
  • DKIM(可选)

1. 创建发件 worker

这里使用手动创建的方式:

  • 进入 Cloudflare 控制台 https://dash.cloudflare.com/,点击侧边栏 Workers 和 Pages
  • 点击创建应用程序 -> 创建 worker -> 名称随意,比如 sender -> 点击 部署
  • 进入到该 worker,点击 编辑代码,将代码 send-worker.js 粘贴进去并保存部署
  • 在 worker 的 设置 -> 变量 中添加以下变量:
变量名 说明 示例
DKIM_DOMAIN 可选,域名后缀 vmail.dev
DKIM_PRIVATE_KEY 可选,DKIM 私钥 MIIEpQIBAAKCAQEA...
DKIM_SELECTOR 可选,固定值 mailchannels mailchannels

DKIM_PRIVATE_KEY 后续会提到如何获取。

记住 worker 分配的地址,即 https://<worker-name>.<your-name>.workers.dev,后面会用到。

2. 准备 DKIM 私钥(可选)

DKIM 是一种电子邮件认证技术,可以验证邮件的发送者身份。

在终端执行下面的命令,生成 DKIM 私钥,参考 Adding-a-DKIM-Signature

openssl genrsa 2048 | tee private_key.pem | openssl rsa -outform der | openssl base64 -A > private_key.txt

echo -n "v=DKIM1;p=" > dkim_record.txt && openssl rsa -in private_key.pem -pubout -outform der | openssl base64 -A >> dkim_record.txt

这两条命令会生成3个文件:

  • private_key.pem:私钥文件
  • private_key.txt:私钥文件,base64 编码
  • dkim_record.txt:DKIM 记录

其中 private_key.txt 文件中的内容就是上一步 DKIM_PRIVATE_KEY 变量的值。

3. 配置 DNS

进入 Cloudflare 托管域名控制台,选择你的域名 -> 点击 DNS,接下来,需要添加3条TXT记录修改1条TXT记录

新增的如下:

类型 名称 备注
TXT _dmarc v=DMARC1; p=reject; adkim=s; aspf=s; rua=mailto:YYY; ruf=mailto:YYY pct=100; fo=1; 固定值
TXT mailchannels._domainkey v=DKIM1;p=MIIEpQIBAAKCAQEA... 值为 dkim_record.txt 文件的内容
TXT _mailchannels v=mc1 cfid=yesmore.workers.dev 将其中的 yesmore 修改为你的账号名称

需要修改的如下(TXT记录值为 example.com 即你的域名的那条):

类型 名称 备注
TXT example.com v=spf1 include:_spf.mx.cloudflare.net include:relay.mailchannels.net ~all 把值替换为这个,其他不动

最后一共4条TXT记录:

dkim-record-checker 验证 DKIM 记录是否配置成功。

4. 验证发送

方法一:打开网页 https://<sender-name>.<your-name>.workers.dev/submit 验证是否可以正常发送

方法二:使用 API 发送

  • 请求地址 https://<sender-name>.<your-name>.workers.dev
  • 请求方法 POST
  • 请求体:
{
  "from": {
      "email": "sender@vmail.dev",
      "name": "发送者"
  },
  "personalizations": [
    {
      "to": [
        {
          "email": "example@gmail.com",
          "name": "接收者"
        }
      ]
    }
  ],
  "subject": "邮件标题",
  "content": [
    {
      "type": "text/plain",
      "value": "邮件内容"
    }
  ]
}

示例:

5. 添加环境变量

此项目使用第4步中的方法二通过 API 发送邮件。

在 Vercel 项目控制台中,进入 Settings -> Environment Variables,添加以下变量:

  • SEND_WORKER_URL:值为 https://<sender-name>.<your-name>.workers.dev

添加后重新触发部署一次即可。