ruby 如何更改“设计:密码重置说明电子邮件的主题”

bqucvtff  于 2023-03-22  发布在  Ruby
关注(0)|答案(7)|浏览(200)

我只是无法更改“密码重置说明”电子邮件的主题。我已经更改了邮箱中的notifer.rb以覆盖Devise默认的电子邮件主题。但它不起作用。
在我的应用程序中,Devise.yml文件中有默认的电子邮件主题,但我想通过从数据库中提取数据来动态更改它。

cigdeys3

cigdeys31#

我在devise.en.yml中添加了翻译,但是reset_password_instructions的正确键是user_subject而不是subject

en:
    devise:
      mailer:
        reset_password_instructions:
          user_subject: Reset password instructions
pw136qt2

pw136qt22#

你可以在intilizer目录下的devies.en.yml文件中更改它
并为任何邮件设置自己的主题

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

zf2sa74q3#

我通过创建自己的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

然后修改devise.rb初始化器以使用我的邮件程序。

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

bgibtngc4#

更改选项:subject

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

cbjzeqam5#

您可以在控制器中编写自己的方法并调用相应的邮件模板。这将帮助您..否则设计视图,将有一个视图页面发送重置指令。更改那里的内容。

ewm0tg9j

ewm0tg9j6#

对于默认外语(例如日语)

第1步在config/locales/(或其他文件名)中创建一个“ja.yml”

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

STEP 2在config/environments/development.rb上

config.i18n.default_locale = :ja

步骤3重新启动服务器

edqdpe6u

edqdpe6u7#

如果您愿意翻译Devise消息(我的例子就是这样),更好的做法是在config/locale中创建一个新的yml文件,并将应用程序的区域设置更改为config/application.rb
1.为了说明,我必须在config/locale内部创建devise.pt-BR.yml
1.然后我从网上复制了它的翻译,在this link上。
1.最后,我将应用程序的新区域设置为config/application.rb,如下所示:

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

希望它能帮助你们中的一些人有和我一样的问题。

相关问题