通过带有node.js附件的aws ses发送邮件

时间:2014-04-13 12:36:24

标签: node.js email amazon-web-services email-attachments amazon-ses

有没有人举例说明如何使用aws ses在node.js中发送带附件的电子邮件。 那对我来说真的很有帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

有一个很棒的邮件库叫做Nodemailer,它也支持Amazon SES。以下是如何发送附件https://github.com/andris9/Nodemailer/blob/master/examples/example_ses.js的电子邮件的一个小示例。

但请注意,当您的电子邮件发送失败时,亚马逊会出现奇怪的错误。

答案 1 :(得分:0)

如果要避免痛苦,必须使用包装在Nodemailer中的SES。直接使用AWS开发工具包,您无法使用ses.sendEmail发送附件,而必须使用ses.sendRawEmail,这很糟糕,因为您必须使用标头和诸如此类的内容来形成原始电子邮件,并且即使这样做了,我还是出现了一个奇怪的错误,正在发送重复的电子邮件...

npm install nodemailer

const AWS = require('aws-sdk');
const nodemailer = require("nodemailer");

async function scheduledEmail () {
  let usefulData = 'some,stuff,to,send';
  
  let transporter = nodemailer.createTransport({
    SES: new AWS.SES({ region: 'us-east-1', apiVersion: "2010-12-01" })
  });
  
  let text = 'Attached is a CSV of some stuff.';

  // send mail with defined transport object
  let info = await transporter.sendMail({
    from: '"Some name" <someone@example.com>',
    to: "someone_else@example.com",
    subject: "Hello",                // Subject line
    text: text,                      // plaintext version
    html: '<div>' + text + '</div>', // html version
    attachments: [{
        filename: "usefulData.csv",
        content: usefulData
    }]
  });

  console.log("Message sent: %s", info.messageId);
  // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
  return info; // or something
}

关于设置附件的其他方法,有很多示例: https://nodemailer.com/message/attachments/

如果您仍处于SES沙箱模式,则必须验证“到/从”地址。在SES发送统计信息页面上申请退出沙盒模式。