SESを利用して、Node.jsのアプリからメール送信してみます。
目次
準備|メールアドレスの検証
送信元ドメイン
または 送信元メールアドレス
の検証が必要です。今回は、送信元メールアドレス
の検証を行います。
SESを利用できるリージョンの中から、
今回は、オレゴンを選択しました。
Verify a New Email Address
をクリックします。
利用したいメールアドレスを入力します。
入力したメールアドレス宛てに確認メールが送信されます。確認メールのリンクをクリックすることで検証済みとなります。
Statusがverified
になっていれば検証済みです。
Node.jsでメール送信
パッケージインストール
npm install aws-sdk dotenv --save
.env
.env
に SESの権限を持った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)
})
SESは、申請しないとSandBox上でしか利用できなく、検証済みメールアドレス・ドメインにしかメール送信できません。コンソール上でも画像のように、SandBox上で利用中であることが確認できます。
そのため、今回は送信先にも先ほど検証したメールアドレスを指定しています。
実行結果
$ node app.js
{ ResponseMetadata: { RequestId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' },
MessageId: 'xxxxxxxxxxxxxxxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-xxxxxx' }
無事メール送信できました。