最近在开发一个浏览器插件,因为使用了 supabase 的 auth 功能,所以需要配置邮件发送功能。但是由于 Supabase 官方 this has been updated to 2 emails per hour 的限制,所以考虑使用其他邮件服务。

简洁优雅的 Resend

Resend 作为目前独立开发者最常用的邮件服务,其简洁优雅的 API 设计,以及稳定的邮件发送能力,深受独立开发者的喜爱。同时非常方便地与 Supabase 集成。

resend_with_supabase.png

但是对于刚刚起步的独立开发者而言,其免费版仅有的3000月额度,同时支持仅绑定一个域名,难以满足需求,所以在这里推荐一个免费的平替方案: Maileroo

Maileroo 配置

注册完成之后直接选择 Email API 即可。

email_api.png

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

domain_management.png

这里可以选择使用 maileroo 提供的域名,也可以使用自己的域名(需要自己手动添加 DNS 记录)。

与 Resend 相同,可以选择配置 SMTP 或者 API 调用两种方式。

配置 SMTP

点击 stmp accounts 并创建新的账户,按照给出的参数填入即可。

smtp_config.png

这里以 SupabaseCoolify 的配置为例。

首先进入 supabase project 页面,点击 authentication -> Emails -> SMTP Settings supabase.png

这里 Sender Email 和 Username 填入 maileroo 的邮箱地址,Password 填入的密码。端口号随便选一个填写即可。

Coolify 的配置与 supabase 类似,不过需要特别说明的是需要把 port 和 encrpytion 正确填写。

  • 465端口使用 TLS/SSL 协议加密通信。
  • 587端口使用 STARTTLS 协议加密通信。

注⚠️: 如果使用了自部署的 VPS,部分厂商会将 465 和 587 端口的出口屏蔽掉,可以提工单尝试开启或者使用其他端口。

Coolify.png

这里可以点击 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);
    });