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

调用AWS SES发邮件报InvalidParameterValue: Invalid Base64 stream错误

报错根因

你遇到的InvalidParameterValue: Invalid Base64 stream报错由以下几个问题共同导致:

  • 附件传入的不是合法纯Base64字符串:你直接把Data URL格式的图片字符串填进去了,开头的data:image/png;base64,是Data URI的协议前缀,不属于Base64编码内容本身,SES解析时会把这段前缀计入Base64流,直接判定编码非法。
  • MIME结构配置错误:
    • 带附件的邮件顶层Content-Type不能用multipart/alternative,这个类型仅用来承载纯文本、HTML两种互斥的正文备选内容,要同时包含正文+附件必须使用multipart/mixed类型
    • 附件的Content-Type配置错误:你传输的是图片文件,却配置成了text/plain类型,和实际文件格式不匹配;另外你写的附件名是test.jpeg,但实际Base64内容是PNG格式,存在格式不匹配问题
  • 潜在兼容问题:MIME规范要求Base64编码的传输内容每行长度不超过76字符,整段长Base64不折行可能触发解析异常。
修复步骤
  1. 先清洗Base64字符串,移除Data URI前缀,同时按规范折行:
// 从Data URL中提取纯Base64内容
const rawBase64Str = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3/OAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANCSURBVEiJtZZPbBtFFMZ/M7ubXdtdb1xSFyeilBapySVU8h8OoFaooFSqiihIVIpQBKci6KEg9Q6H9kovIHoCIVQJJCKE1ENFjnAgcaSGC6rEnxBwA04Tx43t2FnvDAfjkNibxgHxnWb2e/u992bee7tCa00YFsffekFY+nUzFtjW0LrvjRXrCDIAaPLlW0nHL0SsZtVoaF98mLrx3pdhOqLtYPHChahZcYYO7KvPFxvRl5XPp1sN3adWiD1ZAqD6XYK1b/dvE5IWryTt2udLFedwc1+9kLp+vbbpoDh+6TklxBeAi9TL0taeWpdmZzQDry0AcO+jQ12RyohqqoYoo8RDwJrU+qXkjWtfi8Xxt58BdQuwQs9qC/afLwCw8tnQbqYAPsgxE1S6F3EAIXux2oQFKm0ihMsOF71dHYx+f3NND68ghCu1YIoePPQN1pGRABkJ6Bus96CutRZMydTl+TvuiRW1m3n0eDl0vRPcEysqdXn+jsQPsrHMquGeXEaY4Yk4wxWcY5V/9scqOMOVUFthatyTy8QyqwZ+kDURKoMWxNKr2EeqVKcTNOajqKoBgOE28U4tdQl5p5bwCw7BWquaZSzAPlwjlithJtp3pTImSqQRrb2Z8PHGigD4RZuNX6JYj6wj7O4TFLbCO/Mn/m8R+h6rYSUb3ekokRY6f/YukArN979jcW+V/S8g0eT/N3VN3kTqWbQ428m9/8k0P/1aIhF36PccEl6EhOcAUCrXKZXXWS3XKd2vc/TRBG9O5ELC17MmWubD2nKhUKZa26Ba2+D3P+4/MNCFwg59oWVeYhkzgN/JDR8deKBoD7Y+ljEjGZ0sosXVTvbc6RHirr2reNy1OXd6pJsQ+gqjk8VWFYmHrwBzW/n+uMPFiRwHB2I7ih8ciHFxIkd/3Omk5tCDV1t+2nNu5sxxpDFNx+huNhVT3/zMDz8usXC3ddaHBj1GHj/As08fwTS7Kt1HBTmyN29vdwAw+/wbwLVOJ3uAD1wi/dUH7Qei66PfyuRj4Ik9is+hglfbkbfR3cnZm7chlUWLdwmprtCohX4HUtlOcQjLYCu+fzGJH2QRKvP3UNz8bWk1qMxjGTOMThZ3kvgLI5AzFfo379UAAAAASUVORK5CYII=";
const pureAttachmentBase64 = rawBase64Str.replace(/^data:image\/\w+;base64,/, '');
// 按76字符每行折行Base64内容,符合MIME规范
const foldedBase64 = pureAttachmentBase64.match(/.{1,76}/g).join('\n');
  1. 修正MIME结构,调整Content-Type配置,核心代码如下:
const boundary = `----=_Part${Math.random().toString().substr(2)}`;
const rawMessage = [
  `From: ${"johndoe@support.com"}`,
  `To: ${"lorem@ipsum.com"}`,
  `Subject: ${"template.SubjectPart"}`,
  `MIME-Version: 1.0`,
  `Date: ${this.formatDate(date)}`,
  // 顶层类型改为multipart/mixed承载正文+附件
  `Content-Type: multipart/mixed; boundary="${boundary}"`,
  `\n`,
  `--${boundary}`,
  // 正文部分嵌套multipart/alternative兼容纯文本/HTML客户端
  `Content-Type: multipart/alternative; boundary="${boundary}-body"`,
  `\n`,
  `--${boundary}-body`,
  `Content-Type: text/plain; charset=UTF-8`,
  `Content-Transfer-Encoding: 7bit`,
  `\n`,
  "template.TextPart",
  `--${boundary}-body`,
  `Content-Type: text/html; charset=UTF-8`,
  `Content-Transfer-Encoding: 7bit`,
  `\n`,
  "<h1> Thanks for reaching me out </h1>",
  `\n`,
  `--${boundary}-body--`,
  `\n`,
  `--${boundary}`,
  // 附件Content-Type改为对应图片格式,文件名和格式匹配
  `Content-Type: image/png; name="test.png"`,
  `Content-Description: test.png`,
  `Content-Disposition: attachment;filename="test.png";`,
  `creation-date="${this.formatDate(date)}"`,
  `Content-Transfer-Encoding: base64`,
  `\n`,
  foldedBase64, // 传入折行后的纯Base64内容
  `\n`,
  `--${boundary}--`,
];

const mailParams: SES.Types.SendRawEmailRequest = {
  Source: `${companyName} <${alias}>`,
  Destinations: [toEmail],
  RawMessage : {
    Data: rawMessage.join('\n'),
  },
};
// 后续发送逻辑保持不变即可

注意:如果确定不需要兼容纯文本邮件客户端,也可以不嵌套multipart/alternative层,直接在multipart/mixed下放HTML正文和附件,不影响发送。

内容的提问来源于stack exchange,提问作者Anas Arshad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:00:56