
使用 resend 发送邮件时,若设置了 cc 和 bcc 字段但收件人未收到副本,根本原因通常是发件人地址(from)未通过域名验证——免费版或未验证域名下,resend 会静默忽略 cc/bcc 字段,仅投递至 to 地址。
使用 resend 发送邮件时,若设置了 cc 和 bcc 字段但收件人未收到副本,根本原因通常是发件人地址(from)未通过域名验证——免费版或未验证域名下,resend 会静默忽略 cc/bcc 字段,仅投递至 to 地址。
在您提供的代码中,from 字段使用的是 <a class="__cf_email__" data-cfemail="315e5f535e504355585f5671435442545f551f555447" href="/cdn-cgi/l/email-protection">[email protected]</a> 这类经 Cloudflare 邮箱保护混淆的地址。该地址无法用于实际发信,更无法通过 Resend 的域名所有权验证流程。Resend 要求 from 必须是您拥有并已验证的自定义域名邮箱(如 noreply@yourdomain.com),而非任意第三方邮箱(包括 Gmail、Outlook 或混淆邮箱)。
✅ 正确配置步骤如下:
注册并验证您的域名
登录 Resend Dashboard → “Domains” → 点击 “Add Domain”,输入您的域名(如 yourdomain.com)。Resend 将提供 DNS 记录(TXT 和 CNAME),需在您的域名托管平台(如 Cloudflare、GoDaddy)中添加并等待生效(通常 1–24 小时)。-
使用验证后的域名邮箱作为 from
域名验证成功后,在 Dashboard 中启用该域名,并创建一个发件邮箱(如 noreply@yourdomain.com)。此邮箱将作为合法的 from 地址:const emailData = { from: 'noreply@yourdomain.com', // ✅ 必须是已验证域名下的邮箱 to: 'recipient@example.com', subject: 'Hello', html: '<p>Hi there!</p>', cc: ['cc@example.com'], // ✅ 数组格式,支持多个邮箱 bcc: ['bcc@example.com'] // ✅ 同样为数组格式 }; -
注意字段命名与数据类型
- Resend API 严格区分 cc 和 bcc(非 CC/CCO);您的代码中 CCO 应改为 bcc。
- 所有邮箱字段(to、cc、bcc)必须为字符串数组(即使单个地址也需包裹为 ['user@domain.com']),而非字符串。
- 修正后的解构与构造示例:
const { TO, subject, body, CC, CCO } = req.body; // ⚠️ 注意:TO、CC、CCO 应为数组(如 ["a@b.com"]),否则需转换 const emailData = { from: 'noreply@yourdomain.com', to: Array.isArray(TO) ? TO : [TO], subject, html: body, cc: Array.isArray(CC) ? CC : [CC].filter(Boolean), bcc: Array.isArray(CCO) ? CCO : [CCO].filter(Boolean) };
免费版限制说明
Resend 免费计划(Free Tier)不限制 CC/BCC 功能本身,但强制要求使用已验证域名作为 from。未验证域名(包括 resend.dev 测试域)下发送的所有邮件,系统会自动剥离 cc/bcc 字段以保障反垃圾策略——这正是您日志中“未显示发送至 CC/BCC”的原因。
? 额外建议:
- 使用 Postman 测试时,确保请求体中的邮箱字段为标准字符串(避免 HTML 标签或混淆邮箱);您当前 POSTMAN 示例中的 <a> 标签需清除,仅保留纯邮箱地址。
- 发送后可通过 Resend Dashboard 的 “Emails” 页面查看完整投递日志,确认 cc/bcc 是否被接收并标记为“delivered”。
- 若仍失败,请检查响应中的 error.code(如 invalid_from_address 或 unverified_domain),这些错误码比通用异常更具诊断价值。
完成域名验证后,CC/BCC 功能将立即生效,且所有副本收件人均可正常收到邮件并看到对应头信息(BCC 收件人彼此不可见,符合 SMTP 规范)。

















