ZSend 是一个部署在 Cloudflare Workers 上的邮件发送网关,提供 Web 管理后台、多 SMTP 账号管理和统一的 HTTP 发信 API,由xiaoz开发,已经在Github开源。

ZSend解决了哪些问题?
多个 SMTP 账号不好统一管理
你可能有企业邮箱、个人域名邮箱、不同业务线的 SMTP 账号。ZSend 可以集中管理多个 SMTP 账号,通过发件人地址自动匹配对应账号发信。
业务系统只想调用 HTTP API,不想接 SMTP
不同的开发语言依赖不同的SMTP包,接入非常繁琐,ZSend 把 SMTP 封装成统一的 HTTP 发信接口,简化业务接入。
记录发送日志
部分SMTP发信后不具备转移到【已发送】的功能,导致发信日志缺失,而ZSend会记录每一条发信日志。
总之ZSend 适合那些已经有多个 SMTP 账号、希望用统一 HTTP API 发信、又不想引入复杂邮件系统或商业邮件服务的轻量自托管场景。
ZSend特点
- 支持 Cloudflare Workers 部署
- 可视化管理:支持WebUI管理和查看邮件发送日志
- 支持配置多个 SMTP 账号
- 提供统一HTTP API 发送邮件
- 支持
text、html、markdown内容 - 自动重试:SMTP 发送失败时自动重试一次
- 发信日志:每次发信请求都会记录日志
- 鉴权访问:发信接口使用 Bearer Token 鉴权
部分截图



将ZSend部署到 Cloudflare Workers
前置条件
- 安装 Wrangler CLI
- 登录 Cloudflare 账号
- 安装 Bun
wrangler login1. Fork 并克隆项目
Fork 本项目到您的 Github 账号,然后克隆到本地:
git clone https://github.com/your-username/zsend.git
cd zsend2. 创建 D1 数据库
wrangler d1 create zsend创建成功后会输出类似信息:
✅ Successfully created DB 'zsend'
[[d1_databases]]
binding = "DB"
database_name = "zsend"
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"将输出的 database_id 填入 wrangler.jsonc 文件中的 database_id 字段。
3. 设置环境变量
wrangler secret put TOKEN
# 输入任意字符串,后续调用接口需要使用这个字符串做为 Bearer Token4. 部署项目
bun install
wrangler deploy部署成功后会显示访问地址,例如:https://zsend.your-subdomain.workers.dev
5. 配置 SMTP 账号
部署完成后,访问 https://zsend.your-subdomain.workers.dev 即可通过 Web UI 查看发信日志和配置SMTP账号。
6. 测试发信
curl -X POST "https://zsend.your-subdomain.workers.dev/api/v1/send" \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{
"from": "no-reply@example.com",
"to": "user@example.com",
"title": "欢迎使用",
"content": "# Hello\n这是一封由 ZSend 发出的邮件。",
"type": "markdown",
"sender_name": "ZSend 通知"
}'结语
ZSend 是一款部署于 Cloudflare Workers 的开源邮件网关,让多 SMTP 账号管理、统一 HTTP 发信与日志记录变得简单轻量。无需复杂邮件系统,即可为业务系统快速集成发信能力。
ZSend项目地址:https://github.com/helloxz/zsend










