You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SendGrid发送重复/多份附件?重复Base64附件仅收到一份的原因排查

解决SendGrid发送重复附件仅显示一份的问题

这个问题我之前也碰到过!核心原因是SendGrid会根据附件的filename字段自动去重——如果两个附件的文件名完全相同,哪怕Base64内容是重复的,SendGrid也只会保留其中一份。

你当前的attachments数组里,两个附件应该是默认使用了相同的文件名(比如从URL解析来的programming-languages.png),所以被SendGrid合并成一个了。

解决方案:给每个重复附件设置不同的文件名

只需要在构造attachments数组时,给每个元素手动指定不同的filename即可,哪怕文件内容完全一致,只要文件名不一样,就能作为独立附件显示。

修改你的代码示例如下:

// 假设你已经把两个URL转成了Base64字符串,分别存为base64Str1和base64Str2
const attachments = [
  {
    content: base64Str1,
    filename: "programming-languages-1.png", // 不同的文件名
    type: "image/png",
    disposition: "attachment"
  },
  {
    content: base64Str2,
    filename: "programming-languages-2.png", // 不同的文件名
    type: "image/png",
    disposition: "attachment"
  }
];

// 然后正常调用SendGrid发送
const sendGridRaw: [ClientResponse, unknown] = await sendGrid.send({ 
  to: email, 
  from: infoFrom, 
  subject, 
  html: msg, 
  attachments 
});

为什么会这样?

SendGrid的这个设计是为了避免用户误发重复附件,但如果你的业务场景确实需要发送多份相同文件(比如给用户发送同一文档的多个副本),就必须通过区分文件名来绕过这个去重机制。

亲测这个方法有效,修改后你就能收到两份独立的附件了!

内容的提问来源于stack exchange,提问作者Ericson Willians

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 17:22:28