最近在开发一个浏览器插件,因为使用了 supabase 的 auth 功能,所以需要配置邮件发送功能。但是由于 Supabase 官方 this has been updated to 2 emails per hour 的限制,所以考虑使用其他邮件服务。
简洁优雅的 Resend
Resend 作为目前独立开发者最常用的邮件服务,其简洁优雅的 API 设计,以及稳定的邮件发送能力,深受独立开发者的喜爱。同时非常方便地与 Supabase 集成。

但是对于刚刚起步的独立开发者而言,其免费版仅有的3000月额度,同时支持仅绑定一个域名,难以满足需求,所以在这里推荐一个免费的平替方案: Maileroo。
Maileroo 配置
注册完成之后直接选择 Email API 即可。

进入 dashboard 之后可以点击左侧 domain 进入域名管理页面。

这里可以选择使用 maileroo 提供的域名,也可以使用自己的域名(需要自己手动添加 DNS 记录)。
与 Resend 相同,可以选择配置 SMTP 或者 API 调用两种方式。
配置 SMTP
点击 stmp accounts 并创建新的账户,按照给出的参数填入即可。

这里以 Supabase 和 Coolify 的配置为例。
首先进入 supabase project 页面,点击 authentication -> Emails -> SMTP Settings

这里 Sender Email 和 Username 填入 maileroo 的邮箱地址,Password 填入的密码。端口号随便选一个填写即可。
Coolify 的配置与 supabase 类似,不过需要特别说明的是需要把 port 和 encrpytion 正确填写。
- 465端口使用 TLS/SSL 协议加密通信。
- 587端口使用 STARTTLS 协议加密通信。
注⚠️: 如果使用了自部署的 VPS,部分厂商会将 465 和 587 端口的出口屏蔽掉,可以提工单尝试开启或者使用其他端口。

这里可以点击 Send Test Email 测试是否配置成功。
API 调用
这里以 Node.js 为例,使用代码发送邮件。
const axios = require('axios');
const FormData = require('form-data');
const url = 'https://smtp.maileroo.com/send';
let data = new FormData();
data.append('from', 'From Name <[email protected]>');
data.append('to', 'To Name <[email protected]>');
data.append('subject', 'Test Email');
data.append('plain', 'This is a test email.');
data.append('html', '<b>This is a test email.</b>');
const config = {
method: 'post',
url: url,
headers: {
'X-API-Key': 'yourapikey',
...data.getHeaders()
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});