使用AWS SDK v3 for Node.JS发送Raw邮件时Header未被解析的问题
问题解决:AWS SES发送原始邮件时Header被识别为正文的问题
核心原因:原始消息开头的多余换行
你定义的msg字符串开头有一个额外的换行,这会导致AWS SES将整个内容视为纯文本正文,而非带有标准MIME头部的邮件。根据RFC规范,邮件的头部必须从内容的第一行开始,不能以空行开头。空行只能用来分隔头部和正文,而不能出现在头部的最前面。
修正后的代码
把msg开头的换行去掉,确保头部从第一行开始:
const msg = `From: "No-Reply" <no-reply@foobar.com> To: someone@foobar.com Date: Wed, 4 Sep 2024 19:02:29 +0000 Subject: Test Content-Type: text/plain MIME-Version: 1.0 Hello, world! `; const ses = new SES({region: 'eu-west-1'}); const result = await ses.sendRawEmail({ Destinations: ["someone@foobar.com"], RawMessage: { Data: Buffer.from(msg) }, Source: 'No-Reply <no-reply@foobar.com>' });
额外注意事项
- 确保
Source参数的值和From头部完全一致,避免SES触发额外的校验逻辑,导致邮件格式被异常处理。 - 确认
Date头部的格式严格符合RFC 5322规范,比如星期、日期、时区的格式不能出错,否则部分邮件客户端也可能解析异常。
内容的提问来源于stack exchange,提问作者JHH
相关产品推荐
相关产品推荐

