给 Waline 做自己的通知邮箱!

10390 14

原文地址: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 给你自动转发邮件

这至少需要你购买一个域名。免费域名也行,但是要能放在 Cloudflare 上。

这个页面,就能看到接入域名的提示。

转发到 Gmail 是可选的,转发到 QQ 邮箱也行,因为我们不依赖 Cloudflare 发邮件。然后设置 Cloudflare 的邮箱白名单。

这样其实就好了。但是为了防止 Cloudflare 乱发邮件,还得给特定的邮箱设置转发到 Gmail。比如我的邮箱是 hi at karlbaey dot top(记作邮箱 A),就设置一个。

这样就可以了。下面就是 Resend 那一边的事。

用 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 的文档里已经写好了怎么配置评论通知的环境变量。我是把 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 的邮件模板

我基于 Waline 给的东西自己魔改了一番,由于它用的是 Nunjunks 模板(不是我熟悉的 Hugo 模板🙁),所以可以插入一些条件语法。

⚠️重要!每一个环境变量都需要压缩成一行之后输入 Vercel。HTML 找个地方压缩就行,压缩后不影响解析。

先是两个邮件标题模板。

然后是给访客评论用的 MAIL_TEMPLATE

还有最后给博主的通知模板 MAIL_TEMPLATE_ADMIN

效果图大概是下面这样。我把评论通知推到 QQ 邮箱,没有测试过其他家的样子。配色乱搞的,好奇我怎么配色的参考这里

反正我是看过各种各样花里胡哨的评论提醒,有信封式的、有黑黑绿绿黑客式的,甚至还有一点 CSS 都不会写、把整个版面搞得乱七八糟的。我这个重在简单明了,不考虑那么多七七八八的了,关于我的哲学,感兴趣的看漫漫长路去(发稿时只有一篇文😅)。

See Also

  1. 【Cloudflare Docs】Enable Email Routing(英文)←本文基于 Cloudflare 的邮件路由文档写成。

脚注

  1. 包括:25(SMTP)、465(SMTPS)、587(SMTP提交)、143(IMAP)、993(IMAPS)、110(POP3)、995(POP3S)。其中,25 端口(TCP)用于邮件服务器间投递,至关重要且常被 VPS 厂商封锁,需申请解封。此外,如果使用 Web 界面管理邮局,需开放 80(HTTP)和 443(HTTPS)端口。 ↩︎

  2. 其余的就是 AWS SES 这一类服务了,个人没有负担这费用的必要。 ↩︎

一名纯的 Python3 爱好者,好困~纸箱 | 友链随缘加 | 我终于有自己的域名啦!
最新回复 ( 14 )
  • 2
    1
  • 3
    0
    滚来滚去……~(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。
  • 4
    0
    哇,刚好cloudflare和vercel都是我在用的
  • 5
    0

    我也在用这个,Resend真是太良心了

    Larksuite发出的邮件容易进垃圾箱

  • 0
    滚来滚去……~(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。
  • 7
    0
    ;倒是可以,你要弄什么?
  • 8
    0
    我在用Brevo,这个额度更充足吧,每天300封
  • 9
    0
    IlyaYezelovsky 我在用Brevo,这个额度更充足吧,每天300封
    适合自己的才最好,我除了评论通知没有别的要求,所以 100 封足够
  • 10
    0
    看看
  • 11
    0
    这周末试试喵,阿里邮箱不让发推送邮件喵
  • 12
    0
    滚来滚去……~(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。
  • 13
    0
    之前用mail.ru,不知道怎么就被封了,可恶
  • 14
    0
    滚来滚去……~(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。
  • 15
    0
    卡尔白~ 适合自己的才最好,我除了评论通知没有别的要求,所以 100 封足够
    雀食
  • 游客
    16

    您需要登录后才可以回帖

    登录 注册

发新帖