aws-sdk-rails AWS SESを使ってRails 4.2からメールを送付する


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


🤔 Gemのインストール

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

# 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を登録

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

bundle exec figaro install

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

# config/application.yml
AWS_ACCESS_KEY_ID: xxxx
AWS_SECRET_ACCESS_KEY: xxxx

😎 AWS SESのリージョンを設定

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

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

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

$ 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.
=> #, <From: xxxx>, <To: xxxx>, ID: xxxx>, <Subject: Mail from Message>, Version: 1.0>, Type: text/html>, Encoding: 7bit>>

かなり簡単だった!

🐯 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍