SESでメール送信

SESを利用して、Node.jsのアプリからメール送信してみます。

準備|メールアドレスの検証

送信元ドメイン または 送信元メールアドレス の検証が必要です。今回は、送信元メールアドレス の検証を行います。

698-aws-ses_1.png

SESを利用できるリージョンは以下3つのみです。

・バージニア北部(us-east-1)
・オレゴン(us-west-2)
・アイルランド(eu-west-1)

今回は、オレゴンを選択しました。

698-aws-ses_2.png

Verify a New Email Addressをクリックします。

698-aws-ses_3.png

利用したいメールアドレスを入力します。

698-aws-ses_4.png

入力したメールアドレス宛てに確認メールが送信されます。確認メールのリンクをクリックすることで検証済みとなります。

698-aws-ses_5.png

Statusがverifiedになっていれば検証済みです。

Node.jsでメール送信

パッケージインストール

npm install aws-sdk dotenv --save

.env

.envSESの権限を持ったIAMユーザーのAWSクレデンシャル検証したメールアドレス を設定します。

ACCESS_KEY_ID = "XXXXXXXXXXXXXXXXXXXXXX"
SECRET_ACCESS_KEY = "YYYYYYYYYYYYYYYYYYYYY"

ADMIN_EMAIL = "xxxxxxxxx@yyyyyyyyyy"

app.js

require('dotenv').config()
const AWS = require('aws-sdk')

const config = {
  accessKeyId: process.env.ACCESS_KEY_ID,
  secretAccessKey: process.env.SECRET_ACCESS_KEY,
  region: 'us-west-2'
}
const ses = new AWS.SES(config)
const address = process.env.ADMIN_EMAIL

const params = {
  // From
  Source: address,

  // To
  Destination: {
    ToAddresses: [
      address,
    ]
  },

  Message: {
    Subject: {
      Data: 'SES Test'
    },
    Body: {
      Html: {
        Charset: 'UTF-8',
        Data: '<h3>This is SES test.</h3>'
      }
    }
  }
}

ses.sendEmail(params, (err, data) => {
  err ? console.log(err, err.stack) : console.log(data)
})
698-aws-ses_request_1.png

SESは、申請しないとSandBox上でしか利用できなく、検証済みメールアドレス・ドメインにしかメール送信できません。コンソール上でも画像のように、SandBox上で利用中であることが確認できます。

そのため、今回は送信先にも先ほど検証したメールアドレスを指定しています。

参考
Amazon SES サンドボックスの外への移動

実行結果

$ node app.js 
{ ResponseMetadata: { RequestId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' },
  MessageId: 'xxxxxxxxxxxxxxxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-xxxxxx' }
698-aws-ses_result.png

無事メール送信できました。

参考