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

Node.js中从SendGrid入站Webhook响应分离邮件附件的方法

从SendGrid入站Webhook分离附件的方法

一、SendGrid官方结构化解析方案

SendGrid的入站Webhook支持直接返回结构化的附件数据,不用手动处理原始MIME字符串。操作步骤如下:

  • 在SendGrid控制台的「Inbound Parse Settings」中,开启解析配置时勾选「Attachments」选项(部分版本显示为「Include Attachments」)。
  • 开启后,Webhook接收的负载会新增attachments数组,每个元素包含完整的附件信息,自动适配任意数量的附件:
    • filename:附件文件名
    • content:Base64编码的附件内容
    • type:附件MIME类型
    • disposition:附件处置方式(如attachment)
    • content_id:对应邮件中的X-Attachment-Id/Content-ID

示例结构化负载:

body = {
  dkim: '{@gmail.com : pass}',
  subject: 'Subject 1',
  // 其他原有字段...
  attachments: [
    {
      filename: "dummy copy.pdf",
      content: "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp...",
      type: "application/pdf",
      disposition: "attachment",
      content_id: "f_l8buktdz0"
    }
  ]
}

这种方式无需自行编写字符串截取逻辑,可靠性和效率更高。

二、原始MIME内容的通用解析方案

如果无法开启SendGrid的结构化解析,可以借助MIME解析库处理原始email字段,避免手动截取的边界错误:

  • Node.js可使用mailparser库,Python可使用标准库email,它们能自动解析多部分MIME邮件,分离所有附件。
  • Node.js示例代码:
const simpleParser = require('mailparser').simpleParser;

async function extractAttachments(rawEmail) {
  const parsed = await simpleParser(rawEmail);
  return parsed.attachments.map(att => ({
    filename: att.filename,
    content: att.content.toString('base64'),
    type: att.contentType
  }));
}

// 调用示例
const attachments = await extractAttachments(body.email);

内容的提问来源于stack exchange,提问作者Aniruddhsingh Rathore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:50:22