How to change “Devise: password reset instruction email's subject”

半腔热情 提交于 2019-11-27 14:28:52

问题


I'm just unable to change "password reset instruction" email's subject. I have changed notifer.rb in Mailer to overwrite Devise default email subject. But it's not working.

Here in my application there is default Email subject inside Devise .yml file. But I want to make it dynamic to change it by pulling data from DB.


回答1:


you can change it in devise.en.yml file in intilizer directory

And set your own subject for any mailer

                   mailer:
                     confirmation_instructions:
                       subject: 'Confirmation instructions'
                     reset_password_instructions:
                       subject: 'Reset password instructions'
                     unlock_instructions:
                       subject: 'Unlock Instructions'



回答2:


I got this to work by creating my own sub-class of Devise::Mailer.

class DeviseMailer < Devise::Mailer
  def reset_password_instructions(record, token, opts={})
    mail = super
    # your custom logic
    mail.subject = "[SOME DB DATA]"
    mail
  end
end

And then modifying the devise.rb initializer to use my mailer.

# Configure the class responsible to send e-mails.
config.mailer = 'DeviseMailer'



回答3:


Change option :subject:

class DeviseMailer < Devise::Mailer
  def reset_password_instructions(record, token, opts={})
    opts[:subject] = 'SOME DB DATA'
    super
  end
end



回答4:


You can write your own method inside your controller and call the respective mailer template. This will help you.. Else devise views, there will be a view page to send reset instruction. Change the content there..




回答5:


For default foreign language (example Japanese)

STEP 1 Create a 'ja.yml' in config/locales/ (or whatever filename)

ja:
  devise:    
    mailer:
      confirmation_instructions:
        subject: '仮会員登録完了のお知らせ'
      reset_password_instructions:
        subject: 'パスワード再設定手順のお知らせ'

STEP 2 On config/environments/development.rb

config.i18n.default_locale = :ja

STEP 3 Restart server




回答6:


If you're willing to translate your Devise messages, which was my case, a better practice would be creating a new yml file in config/locale and changing your application's locale at config/application.rb

  1. To illustrate, I had to create devise.pt-BR.yml inside config/locale.

  2. Then I copied its translations from internet, on this link.

  3. Finally, I set my application's new locale at config/application.rb as follows:

    config.i18n.default_locale = :'pt-BR'
    

Hope it helps some of you guys having the same problem as mine.



来源:https://stackoverflow.com/questions/14600229/how-to-change-devise-password-reset-instruction-emails-subject

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!