Ruby on Rails 3.2.xでAmazon SESを使ってメールを送信する

Amazon EC2インスタンス上で何かしらアプリを動かしていて、メールを送信したいって場合はEC2のインスタンス上で何とかすることも出来なくはないようですが、結構大変なので素直にAmazon  SESというメール送信サービスを使いましょうというお話です。

Amazon EC2と同じくAWS上のサービスですので、AWSのアカウントが必要です。また迷惑メール配信防止のため、送信元アドレスの存在チェックなど諸々の手続きが必要ですが、その辺はAWSのヘルプを見てください。

で、ようやく本題のRails 3.2.xでAmazon SESを使ってメールを送信する方法ですが、aws-ses という便利なパッケージがありますので今回はこれを利用しましょう。

まずはGemfileに下記を追加してbundle installします。

gem "aws-ses"

インストールに成功したら、config/initializers/amazon_ses.rb を作成してActionMailerでのメール配信方法にAmazon SESでのメール配信を追加します。:access_key_idと:secret_access_keyにはAWSのアクセスキーを設定します。

require 'aws/ses'
ActionMailer::Base.add_delivery_method :ses, AWS::SES::Base,
  :access_key_id     => 'access_key_id',
  :secret_access_key => 'secret_access_key'

後は、config/environment/*.rbに

config.action_mailer.delivery_method = :ses

と追加すればActionMailerでメール送信ができます。