AWSのsdk for node.js を使って、Node.js から AWS の SES でメール送る時の備忘録です。

AWSのSESにアクセスします。

今のところSESは東京リージョンでは使えないので、リージョンはバージニア北部で。

https://console.aws.amazon.com/ses/home?region=us-east-1

送信者のメアドを認証します。

リンクをクリックしてSMTPユーザを作成します。

スクリーンショット 2015-07-07 10.07.21

デフォルトではSendRawEmailポリシー しかアタッチされていないので、SendEmailポリシーを作成しアタッチします。作成したSTMPユーザに認証情報ページから[ユーザーポリシーの作成] – [Policy Generator] で作っていきます。

最終的に出来たポリシーはこれ。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "xxxxxxxxxxx",
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

あと 最初に作られるSMTP ユーザー名とSMTP パスワードでは送れません。

Create Access Key アクセスキーを新たに作成して Credentioals.json に書いておきます。

{
    "accessKeyId": "xxxxxxxxxxxxxxxxxx",
    "secretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "region": "us-east-1" 
}

npm i -S aws-sdk して node から送るコードを書きます。

細かい所はドキュメントで確認します。

Class: AWS.SES — AWS SDK for JavaScript

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config/credentials.json');
var ses = new AWS.SES({apiVersion: '2010-12-01'});

var params = {
    Source: '認証した送信者のメアド',
    Destination: {
        ToAddresses: ['mail@to']
    },
    Message: {
        Subject: {
            Data: 'subject'
        },
        Body: {
            Text: {
                Data: 
                    'body'
            }
        }
    }
};

ses.sendEmail(params, function (err, data) {
    if (err) {
        // handle error
    } else {
        // do something
    }
});

こんな感じです。