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

时间:2018-09-03 14:28:01

标签: amazon-web-services aws-sdk

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

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

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

1 个答案:

答案 0 :(得分: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"
     }
     */
 });

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

重要提示:您需要了解MIME类型标准以包括附件。看看this article

  

MIME由Internet工程任务组于1992年定义。   (IETF)。 MIME邮件的显着特征是   MIME标头的存在。只要您的邮件收件人也   具有兼容MIME的电子邮件软件(以及大多数电子邮件软件   是),则可以自动交换包含附件的文件。

编辑:This article解释了如何在身体中包括附件。

  

MIME通过允许以下内容来完成文件附件的错觉   邮件正文分为不同的部分,每个部分都有自己的   标头。内容类型“多部分/混合”表示   正文分为以“-” +唯一字符串分隔的块   保证在邮件的其他任何地方都找不到。如果你说   您的边界字符串是“ MyBoundaryString”,则所有出现的事件   该字符串的将会被视为边界。所以最好不要在   用户键入的消息,否则将无法正确解码。

Wikipedia也给出了一个示例:

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--

我认为您熟悉Base64