Railsでアプリケーションを作った際のメール送信処理をどうするか。自前でメールサーバーを立てるのはセキュリティリスクもあるし、立てるのも結構大変だったりする。こういうときにAmazon SESは簡単に利用できて便利。

使い方

  1. AWS管理画面にログインして、IAMにアクセス。新規でアカウントを作成して AmazonSESFullAccess の権限を付与する。アクセスキーIDとシークレットキーを保存しておく。
  2. gemをインストール。
gem 'aws-sdk-rails'

config/initializers/aws.rbに以下を記述。

creds =
  Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACESS_KEY'])

Aws::Rails.add_action_mailer_delivery_method(
  :ses,
  credentials: creds,
  region: 'ap-northeast-1',
)

ENV[‘AWS_ACCESS_KEY_ID’]とENV[‘AWS_SECRET_ACESS_KEY’]は環境変数に設定する。環境変数をGitにアップしないように注意!

environments/development.rb に以下を設定。本番で利用したい場合は、production.rbに。

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :ses

  host = 'localhost:3000'
  config.action_mailer.default_url_options = { host: host, protocol: 'http' }

gemがほぼすべて面倒を見てくれるので非常に便利である。