如何在 NodeJS 中使用 AWS SES 发送附件?

Vis*_*ana 5 amazon-web-services aws-sdk

根据给定文档“ https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SES.html#sendTemplatedEmail-property ”。它使用“ sendTemplatedEmail ”API,我们可以使用模板发送电子邮件。成功了。但我不知道如何向其添加附件。

在“ sendTemplatedEmail ”API 文档的第四点中,它表示“消息的总大小(包括附件)必须小于 10 MB”。如何在此 sendTemplatedEmail API 中添加附件?

还有一个名为“ sendRawEmail ”的 API。但这不符合我的要求。我需要使用模板并附加文档。有谁知道该怎么办吗??

Fab*_*ano 1

看一下 SendRawEmail 示例:

/* The following example sends an email with an attachment: */

 var params = {
     Destinations: [], 
     FromArn: "", 
     RawMessage: {
         Data: <Binary String>
     }, 
     ReturnPathArn: "", 
     Source: "", 
     SourceArn: ""
 };
 ses.sendRawEmail(params, function(err, data) {
     if (err) console.log(err, err.stack); // an error occurred
     else     console.log(data);           // successful response
     /*
     data = {
         MessageId: "EXAMPLEf3f73d99b-c63fb06f-d263-41f8-a0fb-d0dc67d56c07-000000"
     }
     */
 });
Run Code Online (Sandbox Code Playgroud)

参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SES.html

重要提示:您需要了解 MIME 类型标准才能包含您的附件。看看这篇文章

MIME 是由互联网工程任务组 (IETF) 于 1992 年定义的。MIME 消息的显着特征是 MIME 标头的存在。只要您的邮件收件人也有符合 MIME 标准的电子邮件软件(大多数电子邮件软件都是如此),您就可以自动交换包含附件的文件。

编辑:本文解释了如何将附件包含在您的身体中。

MIME 通过允许邮件正文分为不同的部分(每个部分都有自己的标头)来完成文件附件的幻觉。内容类型 multipart/mixed 意味着正文的内容被分成由“--”+ 保证在消息中其他任何地方都找不到的唯一字符串分隔的块。如果您说边界字符串是“MyBoundaryString”,那么该字符串的所有出现都将被视为边界。因此它最好不要出现在用户输入的消息中,否则将无法正确解码。

维基百科还给出了一个例子:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=frontier

This is a message with multiple parts in MIME format.
--frontier
Content-Type: text/plain

This is the body of the message.
--frontier
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
Run Code Online (Sandbox Code Playgroud)

我假设您熟悉Base64

  • 电子邮件附件不是单独的项目。附件实际上使用特殊标记嵌入到电子邮件的正文(文本)中。Google 搜索电子邮件 MIME 附件。如果您了解 MIME,向电子邮件添加附件就非常容易。 (2认同)