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

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

有没有人有一些如何使用 aws ses 在

node.js
中发送带有附件的电子邮件的示例?

node.js email amazon-web-services email-attachments amazon-ses
3个回答
25
投票

如果你想避免痛苦,你必须使用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" <[email protected]>',
    to: "[email protected]",
    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: <[email protected]>
  return info; // or something
}

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

如果您仍处于 SES 沙盒模式,则必须验证往返地址。在SES发送统计页面申请退出沙盒模式。


1
投票

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

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


0
投票

如果您想使用 AWS SESv2,而不需要太多痛苦,但比使用 NodeMailer 更直接,您可以使用此 module

轻松构建 mime 数据

Content
SendEmailCommand
部分看起来像:

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

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

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