使用Resend API发送CC和BCC副本失败问题求助
Resend API发送邮件时CC/BCC无法送达的问题排查与解决
问题描述
使用Resend API发送邮件时,已传入合法的收件人邮箱、主题、正文、CC及BCC参数,但仅主收件人能收到邮件,CC和BCC副本均未送达。查看Resend日志未发现CC/BCC的发送记录,尽管POST请求中已包含这些数据。怀疑是免费版功能限制或未配置域名导致,需要排查思路与解决方案。
代码示例
import {Resend} from 'resend' export default class ResendController { static async sendmail (req, res ){ try { const { TO,subject, body, CC, CCO } = req.body; const resend = new Resend(process.env.API_KEY); const emailData = ({ from: 'onboarding@resend.dev', to: TO, subject: subject, html: body, cc: CC, bcc: CCO }); const emailResponse = await resend.emails.send(emailData); if (emailResponse && emailResponse.name === 'validation_error') { return res.status(422).json({ message: 'Error en la validación de correo', error: emailResponse.message }); } res.status(200).json({ message: 'Correo enviado con éxito', emailData}); } catch (error) { res.status(500).json({ message: 'Error al enviar el correo', error: error.message }); } } }
Postman请求参数
{ "TO":"martin@alumnos.cl", "subject": "xd", "body": "hola", "CC":"test2@gmail.com", "CCO": "test@gmail.com" }
排查思路与解决方案
1. 修正CC/BCC参数格式
Resend API要求cc和bcc字段必须为数组格式,即使只有一个收件人也需要用数组包裹。当前代码和请求中传入的是单个字符串,这是核心问题:
- 代码修改:将
cc: CC改为cc: Array.isArray(CC) ? CC : [CC],bcc: CCO改为bcc: Array.isArray(CCO) ? CCO : [CCO] - Postman请求参数调整为数组:
{ "TO":"martin@alumnos.cl", "subject": "xd", "body": "hola", "CC":["test2@gmail.com"], "CCO": ["test@gmail.com"] }
2. 确认免费版功能限制
Resend免费版支持CC/BCC功能,仅存在每月1000封的发送额度限制,不会直接屏蔽CC/BCC。可登录Resend后台查看使用额度,确认是否因超出限制导致部分邮件未发送。
3. 更换自定义发件人域名
当前使用的onboarding@resend.dev是Resend公共域名,部分邮箱服务商可能对这类域名的邮件进行过滤,导致CC/BCC邮件被拦截。建议在Resend后台添加并验证自定义域名,使用自定义域名邮箱作为发件人(如notifications@yourdomain.com),提升邮件送达率。
4. 完善API响应排查
当前代码仅处理了validation_error,可添加完整响应打印,查看是否存在CC/BCC相关的错误信息:
console.log('完整API响应:', emailResponse);
若响应包含errors字段,会明确指出具体问题。
5. 检查收件人垃圾邮件文件夹
部分邮箱服务商可能将CC/BCC邮件归类到垃圾邮件,需提醒CC/BCC收件人检查垃圾邮件或已归档文件夹。
内容的提问来源于stack exchange,提问作者user22747445
相关产品推荐
相关产品推荐

