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でメール送信ができます。