返回

学习笔记 | Cloudflare 邮箱实现自动回复

前言

也许你需要为你的 Cloudflare 实现一个自动回复?

不管如何,我是需要的,但网络上资料又确实不多(至少我并未在中文互联网中找到),因而在此记录。

原理

理所当然也别无选择地,我们使用 Cloudflare Workers 下的 Email Workers 实现。

根据官方文档给出的回复方法,我们需要使用 mimetext 中的 createMimeMessage,因此没办法像上次一样直接在线编辑了,必须要在本地开发好后部署。

安装 Wrangler

Wrangler 是 Cloudflare 官方推出的命令行界面(CLI)工具,专门用于管理和开发 Cloudflare Workers 以及其他相关的开发者平台产品。

我们要在本地进行 Worker 的开发,所以先来安装 Wrangler,需要用到 npm。

npm install -g wrangler

安装完成后使用以下命令登录,在弹出的窗口中登录 Cloudflare 并授权。

wrangler login

创建项目

接着在你希望创建项目的目录下打开 cmd(用 powershell 可能因为禁止运行脚本而出错),新建项目。

wrangler init auto-reply

过程中需要回答一些问题,按照自己的情况选即可,使用方向键选择。

这里我们只是想实现一个邮箱自动回复,模版选择 Hello World exampleWorker only 即可,语言推荐 JavaScript(文档使用的语言),其他的随意。

等待一段时间,项目目录就创建好了。

因为要使用 Node.js 库,因此需要修改项目配置,启用 Node.js 兼容。

项目目录下的 wrangler.jsonc 是项目配置文件,我们在里面添加:

"compatibility_flags": [
    "nodejs_compat"
]

就完成项目配置了。

安装 mimetext 并编写代码

在项目目录下运行 cmd,输入命令安装。

npm install mimetext

然后修改 src/index.js 为下方代码,并修改注释标记的三处配置,就完成了。

import { EmailMessage } from "cloudflare:email";
import { createMimeMessage } from "mimetext";

export default {
  async email(message, env, ctx) {
	// 配置发件人信息
	const senderName = "no-reply";
	const senderAddress = "<SENDER>@example.com";

    const msg = createMimeMessage();
    msg.setHeader("In-Reply-To", message.headers.get("Message-ID"));
    msg.setSender({ name: senderName, addr: senderAddress });
    msg.setRecipient(message.from);

	// 配置邮件标题和内容
    msg.setSubject("自动回复");
    msg.addMessage({
      contentType: 'text/plain',
      data: `我们已收到您的邮件`
    });

    const replyMessage = new EmailMessage(
      senderAddress,
      message.from,
      msg.asRaw()
    );

    await message.reply(replyMessage);
	// 当然,不能光回复,还要将邮件转发到你接受邮件的邮箱,这个邮箱需要在 Cloudflare Email Routing 里验证过
	await message.forward("example@example.com");
  }
}

部署

最后,在项目目录下运行以下命令部署到云端。

wrangler deploy

接着,打开你的 Cloudflare Dashboard,来到对应域名的 Email Routing 电子邮件路由页面,查看电子邮件 Workers,可以发现刚刚部署的已经出现在上面了,将其分配给对应的邮箱地址即可。

注意需要等待约半分钟才会生效。

可以给自己发一条邮件测试,发现成功收到了自动回复。

附录

参考文献

  1. 官方文档
  2. mgmgprndev/CloudflareEmailWorker_AutoReply 项目
  3. Cloudflare workers - 如何使用(起步篇)
  4. Cloudflare菩萨系列:workers 使用指南
  5. Wrangler 入门:开启你的 Cloudflare Serverless 之旅
  6. 官方文档 - Compatibility flags

版权信息

本文原载于 reincarnatey.net,遵循 CC BY-NC-SA 4.0 协议,复制请保留原文出处。

本博客所有内容无特殊标注均为失迹原创内容,复制请保留原文出处。


© Licensed Under CC BY-NC-SA 4.0