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

前端 未结 6 1558
Happy的楠姐
Happy的楠姐 2020-12-15 03:41

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 work

相关标签:
6条回答
  • 2020-12-15 04:23

    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.

    0 讨论(0)
  • 2020-12-15 04:26

    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'
    
    0 讨论(0)
  • 2020-12-15 04:26

    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

    0 讨论(0)
  • 2020-12-15 04:27

    Change option :subject:

    class DeviseMailer < Devise::Mailer
      def reset_password_instructions(record, token, opts={})
        opts[:subject] = 'SOME DB DATA'
        super
      end
    end
    
    0 讨论(0)
  • 2020-12-15 04:27

    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..

    0 讨论(0)
  • 2020-12-15 04:39

    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'
    
    0 讨论(0)
提交回复
热议问题