"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

Node.jsでAWS SES使ってHTMLメールを送る方法



スポンサーリンク

AWSは言わずと知れた、Amazonが提供するクラウドサービスですが、その機能の一つでSESというメールサービスがあります。用途は色いろあると思いますがWebサイトの操作をトリガーとしたメール配信や、メールの一括配信などで使えます。

以下では、Node.jsでSESをを使いHTMLメール(multipart対応)を送信するためのプログラムサンプルを載せています。

以下はAWS Node.js SDKのマニュアルサイトです。主にこちらの情報を見て組む感じです。
Class: AWS.SES — AWS SDK for JavaScript

AWSのコンフィグファイル(conf/aws.json)

{ 
  "accessKeyId": "アクセスキー", 
  "secretAccessKey": "シークレットキー", 
  "region": "us-east-1"
}

前提としてAWSのアカウントを持っていることが必要ですが、その際に取得するAWSを使用する際のキーのことです。
こちらに取得方法の記載があります)

メール機能のmodelファイル(model/mail.js)

このファイルで、メッソドやプロパティを定義します。冒頭にはAWSSDKを読み込んでいます。
前提としてAWSのモジュールが入っていないといけないので"npm install aws-sdk"でインストールが必要です。

var AWS = require('aws-sdk'); 
AWS.config.loadFromPath('./conf/aws.json');   //上記のコンフィグファイル読み込み
var ses = new AWS.SES({apiVersion: '2010-12-01'});

var Mail = function(data){

    //インスタンスプロパティの設定
    this.data = data;
    this.data['from'] = 'fromのメールアドレス';

};   


//メール送信メソッド
Mail.prototype.sendHTMLMail = function(data,callback){

    var to = [this.data['to']];
    var text = this.data['text'];
    var html = this.data['html'];
    var from = "送信元メールアドレス";

    ses.sendEmail({ 
       Source       : from, 
       Destination  : { ToAddresses: to },
       Message:{
           Subject  : {
              Data: '件名文章',
              Charset : 'utf-8'
           },
           Body: {
               Text: { 
                   Data: text,
                   Charset : 'utf-8'
               },
               Html: { 
                   Data: html,
                   Charset : 'utf-8'
               }
            }
       }
    }

}

module.exports = Mail;

routeのファイル(route/mail.js)

var Mail = require('../model/mail')

exports.sendHTMLMail = function(req, res){

    //メールを送るための基本情報をセット
    mail_data                = {};
    mail_data['to']          = req.session.email;
    mail_data['text']        = 'テキストメール用のbody";
    mail_data['html']        = 'HTMLメール用のbody";

  //メール機能のインスタンス作成
    var mail    = new Mail(mail_data);

    //メッソドの呼び出し
    var mail_result = mail.sendHTMLMail();
    console.log(mail_result);
};

[ご参考]
単純テキストメール版azwoo.hatenablog.com