原文地址:https://re.karlbaey.top/articles/tinkering/cloudflare-and-resend-to-notify-by-waline/
号外!这是无尽敲打系列的第一篇文章!这里是我的折腾合集。slug 用
articles/tinkering/。
没有买专业域名邮箱服务的钱,但是发现 Resend 可以自定义发件邮箱,所以简单做个记录,说说用在 Waline 设置评论回复通知的操作。
市面常见的免费邮箱虽然已经够用,但是当需要给自己的服务做收发邮件时,有一个自己域名的邮箱会美观很多。比如我的域名是 karlbaey.top,我希望我的读者收到评论回复通知时,是来自于 notifications at karlbaey dot top 这个邮箱,就需要自己折腾折腾 Resend 和 Cloudflare。不会太难,设置几个 DNS 记录的事。
要是自购 VPS 而且开了一大堆端口而且你前一任租客是个纯良公民拿了 VPS 什么都不干就当我什么都没说,自己拉个 docker 开邮局就行,反正我没有这个折腾的闲心。一个推荐的方案是 Mailu。
这至少需要你购买一个域名。免费域名也行,但是要能放在 Cloudflare 上。
在这个页面,就能看到接入域名的提示。
转发到 Gmail 是可选的,转发到 QQ 邮箱也行,因为我们不依赖 Cloudflare 发邮件。然后设置 Cloudflare 的邮箱白名单。
这样其实就好了。但是为了防止 Cloudflare 乱发邮件,还得给特定的邮箱设置转发到 Gmail。比如我的邮箱是 hi at karlbaey dot top(记作邮箱 A),就设置一个。
这样就可以了。下面就是 Resend 那一边的事。
目前的自定义发件域名服务只有 Resend 一家是免费且额度充足的,免费版每天可以发 100 封邮件,这儿有官网。跟 Resend 比起来,QQ 邮箱不能绑自定义域名;Gmail 会显示由你的 Gmail 邮箱代发,泄露风险大;Outlook 则是逼着用户开 Microsoft 365。综合考量,Resend 是最佳的选择。
嫌弃发信额度少,就考虑日后换成 Larksuite 也可以,那个一天可以发 450 封邮件,非常慷慨。
先注册一个 Resend,这个很简单,你甚至可以用你的域名邮箱注册。反正上面已经配置好了 Cloudflare 的 catch-all 规则,Resend 的验证邮件会飞到 Gmail 邮箱里边。
注册成功之后就能进入 Dashboard。选择侧栏的 Domains。
如果你照着上面 Cloudflare 配置域名邮件转发的话,下面应该会自动跳出来一个小黄云跟“Auto configure”,点那个就行。一共是 1 条 MX 记录和 3 条 TXT 记录。
在创建新 API Key 里边写给 Waline 的 Key,Name 随意填。然后你就能看见只显示一次的 Key,把它复制好,下面给 Waline 用。
这样就好了。我用的是 notifications at karlbaey dot top 来发件。
Waline 的文档里已经写好了怎么配置评论通知的环境变量。我是把 Waline 部署在 Vercel 上的,跳到环境变量(Environment Variables)页面添加就行。下面是一个参考的表格。
| 变量名 | 示例值 | 说明 |
|---|---|---|
SMTP_SERVICE |
Resend |
固定填 Resend |
SMTP_USER |
resend |
固定填 resend |
SMTP_PASS |
re_123456789... |
你的 Resend API Key |
SMTP_SECURE |
true |
Resend 推荐 |
SENDER_NAME |
你的博客名称 |
邮件显示的发送者名称 |
SENDER_EMAIL |
[email protected] |
你用来发信的邮箱 |
AUTHOR_EMAIL |
[email protected] |
接收通知的管理员邮箱 |
这样就配置完了。要是你愿意继续折腾可以往下看。
我基于 Waline 给的东西自己魔改了一番,由于它用的是 Nunjunks 模板(不是我熟悉的 Hugo 模板🙁),所以可以插入一些条件语法。
⚠️重要!每一个环境变量都需要压缩成一行之后输入 Vercel。HTML 找个地方压缩就行,压缩后不影响解析。
先是两个邮件标题模板。
然后是给访客评论用的 MAIL_TEMPLATE。
还有最后给博主的通知模板 MAIL_TEMPLATE_ADMIN。
效果图大概是下面这样。我把评论通知推到 QQ 邮箱,没有测试过其他家的样子。配色乱搞的,好奇我怎么配色的参考这里。
反正我是看过各种各样花里胡哨的评论提醒,有信封式的、有黑黑绿绿黑客式的,甚至还有一点 CSS 都不会写、把整个版面搞得乱七八糟的。我这个重在简单明了,不考虑那么多七七八八的了,关于我的哲学,感兴趣的看漫漫长路去(发稿时只有一篇文😅)。
适合自己的才最好,我除了评论通知没有别的要求,所以 100 封足够IlyaYezelovsky 我在用Brevo,这个额度更充足吧,每天300封
雀食卡尔白~ 适合自己的才最好,我除了评论通知没有别的要求,所以 100 封足够