Rails3 + deviseのメール設定

認証機能(サインアップ、ログイン、ログアウトetc)が簡単に実装できるので

deviseはよく使うのですが、その時に少しハマったのでメモ。

 

以下、development環境での設定

/config/environments/development.rb

 

デフォルトではfalseになっているが、

trueにすることでメール送信の際のエラーが表示される

config.action_mailer.raise_delivery_errors = true

 

ホストとポートの設定

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

 

SMTPサーバーのための設定を追記

   # SMTPサーバーの設定
   config.action_mailer.delivery_method = :smtp
   config.action_mailer.default :charset => "utf-8"
   config.action_mailer.perform_deliveries = true
   config.action_mailer.smtp_settings = {
     :address => 'smtp.gmail.com',
     :port => 587,
     :domain => 'gmail.com',
     :authentication => :plain,
     :user_name => 'メールアドレス',
     :password => 'パスワード,
     :enable_starttls_auto => true,
   }

 

ちなみに上記はGmail用の設定。

"config.action_mailer.perform_deliveries = true"の箇所は、メール通知全てに対する設定。falseにすると一切のメール通知がされなくなる。

 

 

もうひとつ修正箇所

/config/initialize/devise.rb

下記の通り変更

config.mailer_sender = "メールアドレス"

 

 

ちなみにログイン時にユーザー名 or メールアドレスでログイン出来るように最初にしておいて、その後だいぶたってからパスワードリセットに取り掛かったから忘れててハマったけど、その設定後でも普通にできる。

 

設定方法は下記リンクに詳しい

https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address