使用 AWS SES 发送包含标头的原始电子邮件

问题描述 投票:0回答:1

我正在尝试使用 AWS SES 以及适用于 Node.JS 的 AWS 开发工具包 v3 发送原始电子邮件。

但是,我发送的电子邮件出现在接收端,原始正文包含在 HTML 容器中,包括标头。因此,它们不是被解析为标头,而是只是作为正文的一部分而结束。

据我所知,我按照电子邮件 RFC 包含了所有必需的标头,我用空行分隔标头和正文等。但是,整个原始消息最终还是被解释为纯文本正文,而不是 MIME 原始消息。

const msg = `
From: "No-Reply" <[email protected]>
To: [email protected]
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: ["[email protected]"],
  RawMessage: {
    Data: Buffer.from(msg)
  },
  Source: 'No-Reply <[email protected]>'
});

收到的这封电子邮件正文中包含整个

msg
字符串,并且没有主题、收件人或日期字段,因为标题未被识别为标题。

我错过了什么?

AWS SDK 接受

RawMessage.Data
形式的
UInt8Array
,因此传递
Buffer
应该可以。文档说内容不必进行 base64 编码,因为 SDK 会处理该内容(据说这就是您传递 Buffer 而不是字符串的原因)。我的观点是,我不认为字符串编码是问题所在?

amazon-web-services amazon-ses aws-sdk-js aws-sdk-nodejs
1个回答
0
投票

好吧,似乎最初的换行符是这里的罪魁祸首,这意味着这解决了问题:

const msg = `From: "No-Reply" <[email protected]>
To: [email protected]
Date: Wed, 4 Sep 2024 19:02:29 +0000
Subject: Test
Content-Type: text/plain
MIME-Version: 1.0

Hello, world!

`
© www.soinside.com 2019 - 2024. All rights reserved.