使用node.js中的附件通过aws-ses发送邮件



有人有关于如何用aws-ses在node.js中发送带有附件的电子邮件的例子吗?

如果你想避免痛苦,你必须使用Nodemailer中封装的SES。直接使用AWS SDK,你不能用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发送统计页面上申请退出沙箱模式。

有一个很棒的邮件库,名为Nodemailer,它也支持Amazon SES。下面是一个关于如何发送带有附件的电子邮件的小示例https://github.com/nodemailer/nodemailer/blob/master/examples/ses.js

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

如果你想使用AWS SESv2而不受太多痛苦,但比使用NodeMailer更直接,你可以使用这个模块轻松地构建mime数据

SendEmailCommandContent部分看起来像:

Content: {
   Raw: {
      Data: Buffer.from(clientMsg.asRaw(), 'utf8')
   }
},

在提供的模块示例中,他们还演示了如何从MIME消息中提取往来电子邮件以避免重新键入。

相关内容

  • 没有找到相关文章

最新更新