V5.3.1 更新说明
发布日期:2026-05-24
延续 V5.3.0 的渠道抽象,新增 Cyberpersons(CyberPanel Email Delivery)作为
第三个内置发件渠道。前端零改动,按发件人邮箱域名自动路由。
主要变更
1. 新增 Cyberpersons 渠道 src/email/providers/cyberpersons/
通过 Cyberpersons 官方 REST API(POST https://platform.cyberpersons.com/email/v1/send)
实现单封 / 批量发件,支持单密钥与多域名键值对/JSON 配置。
依托 CyberPanel 的 Cloudflare 集成,可一键自动配置发件域名的 SPF / DKIM / DMARC,
适合不想手动维护 DNS 的场景。完整接入流程见 Cyberpersons 配置教程。
2. 渠道路由规则扩展为三层
resolveProvider 在原有 SendFlare / Resend 链路末尾追加 Cyberpersons,保证
老部署行为完全不变:
- SendFlare 键值对/JSON 命中 → SendFlare
- Resend 键值对/JSON 命中 → Resend
- Cyberpersons 键值对/JSON 命中 → Cyberpersons(新)
- SendFlare 单密钥兜底
- Resend 单密钥兜底
- Cyberpersons 单密钥兜底(新)
- 都没命中 → 抛错
3. 新增环境变量
CYBERPERSONS_API_KEY,格式与 RESEND_API_KEY / SENDFLARE_API_KEY 完全一致
(单密钥 / 键值对 / JSON)。同时识别别名 CYBERPERSONS_API_TOKEN 和
CYBERPERSONS,与 Resend 的多别名习惯一致。
4. Cyberpersons API 差异适配
Cyberpersons 的请求/响应结构与 Resend 有三处差异,已在 provider 内部消化,
对调用方完全透明:
| 差异点 | Cyberpersons 行为 | provider 内部处理 |
|---|---|---|
| 响应 id 位置 | data.message_id(不是顶层 id) |
内部抽取后仍返回 { id, raw } |
to / cc / bcc |
只接受单字符串,数组返 HTTP 500 | 数组取首个,与 SendFlare 行为一致 |
from 显示名 |
不接受 "Name <addr>",需走独立 from_name 字段 |
自动从 fromName 或 RFC 5322 串中拆出 |
| 错误体结构 | { success:false, error:{ type, message } } |
拼接成 "type: message" 抛出 |
5. /api/send/:id 系列端点扩展
GET / PATCH / /cancel 三个 Resend 特有端点,对 Cyberpersons 渠道发出的记录
返回 400「Cyberpersons 渠道暂不支持此操作」,与 SendFlare 的语义保持一致。
兼容性
- 老部署(仅配 Resend 或 SendFlare)行为 完全等价,无需任何调整
- DB schema 无变化,
sent_emails.provider列直接写入'cyberpersons'字面量 - 升级方式:拉代码 →
wrangler deploy,无需迁移
已知限制
- 单封只能 1 个收件人,多收件人取数组首个;真实多发请走
/api/send/batch - 暂未透传
tags/metadata(Cyberpersons 文档支持但项目内 payload 未产出) - 不支持已发邮件的查询 / 修改 / 取消(同 SendFlare 限制)
历史版本见 README.md 版本历史表。