HerokuのようにSendGridアドオンを使う。
アドオン画面からSendGridを選び、対象のアプリ/environmentを選んでactivateしておく。
Set it upの内容にしたがってey_configというgemを入れておく。これはEYCと連携した各種サービスのIDとかパスワードとかを良いように扱ってくれる。
メールはsendmailでサラッと送りたい気がするが、EC2上のIPはブロックされてたりするのでSendGridやGmailやSESを使うのが無難なようだ。SendGridは無料プランでは1日200通までなので若干不安ではある。
Set it upに書いてあるようにconfig/environments/production.rbに下記を追加する。
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_charset = "utf-8" # NOT FOUND ON RAILS3.1
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
:authentication => :plain,
:address => "smtp.sendgrid.net",
:port => 587,
:domain => "yourdomain.com",
:user_name => EY::Config.get(:sendgrid, 'SENDGRID_USERNAME'),
:password => EY::Config.get(:sendgrid, 'SENDGRID_PASSWORD')
}
EY::Config.getという部分でサーバー上に良い感じに置かれた設定ファイル(実際には/data/app_name/shared/config/ey_services_config_deploy.yml
)から値を読みこんでくれる。
ここで罠なのが、config.action_mailer.default_charset
というメソッドはrails3.1以降は存在しないというところだ。うっかりproductionへデプロイするとサイトがエラーになる。stagingというenvironmentを同じ構成で用意し、試しにデプロイしてみてからの方が無難だろう。