HerokuでRails3.2.2、Devise2.1.2を使った時に、パスワード忘れた時にメール送信が必要だったので、その時のメモ。
まずherokuにはSMTPサービスが無いので、外部サービスを使う。
今回使ったのはこれ。月に200回まで送信無料。他にもGmailもできて、月500通いけるらしいのですが、そんなに使わないので、こっちを試しました。
heroku add-on SendGrid
サービス登録
まずはSendGridに登録します。
まずFreeでSign upします。なんかいろいろ入力して登録します。
するとメールが届くので、Active Your Accountから登録画面に移動します。
AccoutSettingとProfileSettingをいじいじすれば、利用できるようになります。
Railsアプリの設定
設定するところは2つ。
1.environment.rb
に下記を追記。SMTPサーバについての記述。
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:enable_starttls_auto => true
}
2.config/environments/production.rb
のconfigureのブロック内に、下記を追記。メールでサーバーが自身のアプリのURLを作成するとき、下記のホスト名を利用してアドレスを作成します。
config.action_mailer.default_url_options = { :host => 'herokuアプリのホスト名' }
あとはデプロイしましょう。
deviseのログイン画面でForgot your password?
からメールを入力して送信すると、please-change-me-at-config-initializers-devise@example.com
からメールが来ます。
アドレスをちゃんとしたい奴に変えたい場合は、自分で調べてくださいなー
気分が向いたら自分も変えます。