概要

Javascriptで AWS SES を使ってメールを送信したい場合はメールクライアントとして nodemailer がおすすめです。

AWS SESが提供するAPIでメール送信に画像などを添付したいと思ったら MIMEフォーマットの文字列を自分で組み立てないといけませんが nodemailerを使えばそれらの煩雑な作業なしにメール送信ができます。

通常のメール送信

let nodemailer = require("nodemailer");
let aws = require("@aws-sdk/client-ses");

process.env.AWS_ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID";
process.env.AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY";
const ses = new aws.SES({
  region: "ap-northeast-1"
});

let transporter = nodemailer.createTransport({
  SES: { ses, aws },
});

transporter.sendMail(
  {
    from: "sender@example.com",
    to: "recipient@example.com",
    subject: "Message",
    text: "I am a cat. As yet I have no name.",
  },
  (err, info) => {
    console.log(info.envelope);
    console.log(info.messageId);
  }
);

複数のアドレスに送信する

sendMailto パラメータに送信先のアドレスを配列で渡す。

transporter.sendMail({
  //...
  to: ["recipient1@example.com", "recipient2@example.com"]
  //...
})

メールにファイルを添付する

attachments パラメータを使うと簡単にファイルを添付できます。

transporter.sendMail({
  //...
  attachments: [
    { filename: 'text1.txt', path: './text1.txt' },
    { filename: 'text2.txt', content: Buffer.from('I am a cat. As yet I have no name.', 'utf-8') } 
  ]
})