酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Aws-sdk-rails AWS SESを使ってRails4.2からメールを送付する

AWS SESから からRailsでメールを送付する手順の紹介です。『aws/aws-sdk-rails - GitHub』を使います。簡単ですが、今後忘れないためのメモ記事です。


Gemのインストール

Gemfileに以下を追加して、コンソールでbundleを実行してください。

1
2
3
# AWS SDK
gem 'aws-sdk-rails'
gem 'figaro'

SESのコンソールからドメインを登録

SES Management Console から以下を設定。

  • 送付するメールのドメインを登録 (DNSの設定等々)
  • 本番で利用する場合は配信制限を解除 (フォームから申請)

IAMユーザーの作成

IAM Management Console から以下を設定。

  • 送付するためのIAMユーザーを作成
  • ACCESS KEY と SECRET KEY を発行
  • IAMユーザーののアクセス許可(管理ポリシーをアタッチメント)

ACCESS KEY と SECRET KEYを登録

環境変数として読み込むデータの設定ファイルを作成。

1
bundle exec figaro install

ACCESS KEY と SECRET KEYを環境変数に登録。

1
2
3
# config/application.yml
AWS_ACCESS_KEY_ID: xxxx
AWS_SECRET_ACCESS_KEY: xxxx

AWS SESのリージョンを設定

1
2
# config/initializers/aws_ses.rb
Aws::Rails.add_action_mailer_delivery_method(:aws_sdk, { region: 'us-east-1' })

あとはメールを送付するだけ

ActionMailer Railsアプリからメールを送信」とかを見つつメールを送付してみてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ rails c
Loading development environment (Rails 4.2.5)
[1] pry(main)> Message.hello("taro").deliver_now
  Rendered message/hello.html.slim (9.9ms)

Message#hello: processed outbound mail in 311.3ms
[Aws::SES::Client 200 1.143329 0 retries] send_raw_email(raw_message:{data:"Date: Wed, 13 Jan 2016 20:52:31 +0900\r\nFrom: xxxx\r\nTo: xxx\r\nMessage-ID: xxxx\r\nSubject: Mail from Message\r\nMime-Version: 1.0\r\nContent-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\nThere is taro's body."},destinations:["xxxx"])


Sent mail to xxxx (1173.3ms)
Date: Wed, 13 Jan 2016 20:52:31 +0900
From: xxxx
To: xxxx
Message-ID: xxxx
Subject: Mail from Message
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

There is taro's body.
=> #<Mail::Message:xxxx, Multipart: false, Headers: <Date: Wed, 13 Jan 2016 20:52:31 +0900>, <From: xxxx>, <To: xxxx>, <Message-ID: xxxx>, <Subject: Mail from Message>, <Mime-Version: 1.0>, <Content-Type: text/html>, <Content-Transfer-Encoding: 7bit>>

かなり簡単だった!

Special Thanks

おすすめの書籍