Files
cloudflare_temp_email/vitepress-docs/docs/zh/guide/config-send-mail.md
Dream Hunter 5248c03b6c docs: restructure sidebar, expand FAQ, enhance send mail docs (#949)
* docs: restructure sidebar, expand FAQ, enhance send mail docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: remove specific example domain reference in FAQ per review

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 11:47:25 +08:00

4.6 KiB
Raw Blame History

配置发送邮件

::: warning 注意 三种方式可以同时配置,发送邮件时会优先使用 resend,如果没有配置 resend,则会使用 smtp.

如果配置了 Cloudflare 已认证的转发邮箱地址,会优先使用 cf 内部 API 发送邮件 :::

使用 resend 发送邮件

注册 https://resend.com/domains 根据提示添加 DNS 记录,

API KEYS 页面创建 api key

然后执行下面的命令,将 RESEND_TOKEN 添加到 secrets 中

Note

如果你觉得麻烦,也可以直接明文放在 wrangler.toml[vars] 下面,但是不推荐这样做

如果你是通过 UI 部署的,可以在 Cloudflare 的 UI 界面中添加到 Variables and Secrets 下面

# 切换到 worker 目录
cd worker
wrangler secret put RESEND_TOKEN

如果你有多个域名,对应不同的 api key,可以在 wrangler.toml 中添加多个 secret, 名称为 RESEND_TOKEN_ + <. 换成 _ 的 大写域名>,例如

wrangler secret put RESEND_TOKEN_XXX_COM
wrangler secret put RESEND_TOKEN_DREAMHUNTER2333_XYZ

使用 SMTP 发送邮件

SMTP_CONFIG 的格式如下,key 必须是你自己的发信域名value 为 SMTP 配置。

SMTP 配置格式详情可以参考 zou-yu/worker-mailer

[!warning] 重要 JSON 中的 key如下面示例中的 your-domain.com)必须替换为你自己的域名,即 DOMAINS 变量中配置的域名。 这是最常见的配置错误之一,请勿直接复制示例中的域名。

{
    "your-domain.com": {
        "host": "smtp.example.com",
        "port": 465,
        "secure": true,
        "authType": [
            "plain",
            "login"
        ],
        "credentials": {
            "username": "your-smtp-username",
            "password": "your-smtp-password"
        }
    }
}

字段说明:

字段 说明
keyyour-domain.com 你的发信域名,必须与 DOMAINS 中配置的域名一致
host SMTP 服务器地址,如 smtp.mailgun.orgsmtp.gmail.com 或你自建的 SMTP 服务器地址
port SMTP 端口,通常 465SSL587STARTTLS
secure 是否使用 SSL/TLS端口 465 时设为 true,端口 587 时设为 false
authType 认证方式,一般使用 ["plain", "login"]
credentials.username SMTP 服务器的登录用户名
credentials.password SMTP 服务器的登录密码

如果你有多个域名使用不同的 SMTP 服务,在同一个 JSON 中添加多个 key 即可:

{
    "domain-a.com": {
        "host": "smtp.mailgun.org",
        "port": 465,
        "secure": true,
        "authType": ["plain", "login"],
        "credentials": { "username": "user@domain-a.com", "password": "xxx" }
    },
    "domain-b.com": {
        "host": "smtp.gmail.com",
        "port": 465,
        "secure": true,
        "authType": ["plain", "login"],
        "credentials": { "username": "user@gmail.com", "password": "app-password" }
    }
}

然后执行下面的命令,将 SMTP_CONFIG 添加到 secrets 中

Note

如果你觉得麻烦,也可以直接明文放在 wrangler.toml[vars] 下面,但是不推荐这样做

如果你是通过 UI 部署的,可以在 Cloudflare 的 UI 界面中添加到 Variables and Secrets 下面

# 切换到 worker 目录
cd worker
wrangler secret put SMTP_CONFIG

发信余额机制

用户发送邮件需要有发信余额。余额机制如下:

  1. 申请发信权限:用户需要先在前端界面点击「申请发信权限」按钮
  2. 默认额度:申请时会获得 DEFAULT_SEND_BALANCE 环境变量设置的默认额度(如果未设置则为 0
  3. 无限制发送:以下方式可以跳过余额检查:
    • 在 admin 后台将地址加入「无限制发送地址列表」
    • 配置 NO_LIMIT_SEND_ROLE 环境变量,指定可以无限发送的用户角色

Note

DEFAULT_SEND_BALANCE 不会自动给所有地址充值余额,用户必须先主动申请发信权限,额度才会生效。

给 Cloudflare 上已认证的转发邮箱发送邮件

仅支持 CLI 部署时使用,在 wrangler.toml 中添加 send_email 配置

发送的目的邮箱地址必须是 Cloudflare 上已认证的邮箱地址,局限性较大,如果需要发送邮件给其他邮箱,可以使用 resend 或者 smtp 发送邮件

# 通过 Cloudflare 发送邮件
send_email = [
   { name = "SEND_MAIL" },
]

admin 后台 账号配置 已验证地址列表(可通过 cf 内部 api 发送邮件)