30

我只是无法更改“密码重置说明”电子邮件的主题。我已更改 Mailer 中的 notifer.rb 以覆盖设计默认电子邮件主题。但它不起作用。

在我的应用程序中,Devise .yml 文件中有默认的电子邮件主题。但我想通过从数据库中提取数据来动态改变它。

4

6 回答 6

61

您可以在 intilizer 目录的 devise.en.yml 文件中更改它

并为任何邮件设置您自己的主题

                   mailer:
                     confirmation_instructions:
                       subject: 'Confirmation instructions'
                     reset_password_instructions:
                       subject: 'Reset password instructions'
                     unlock_instructions:
                       subject: 'Unlock Instructions'
于 2013-02-24T13:43:44.117 回答
18

我通过创建自己的 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'
于 2014-01-24T23:08:06.657 回答
6

更改选项:subject

class DeviseMailer < Devise::Mailer
  def reset_password_instructions(record, token, opts={})
    opts[:subject] = 'SOME DB DATA'
    super
  end
end
于 2018-04-24T20:28:35.710 回答
1

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

于 2013-01-30T10:03:50.683 回答
1

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

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

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

步骤 2在 config/environments/development.rb

config.i18n.default_locale = :ja

STEP 3重启服务器

于 2016-12-05T06:14:17.843 回答
0

如果您愿意翻译您的设计消息,这是我的情况,更好的做法是在其中创建一个新的 yml 文件config/locale并更改您的应用程序的语言环境config/application.rb

  1. 为了说明,我必须在devise.pt-BR.yml里面创建config/locale.

  2. 然后我在这个链接上从互联网上复制了它的翻译。

  3. 最后,我将应用程序的新语言环境设置config/application.rb如下:

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

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

于 2014-11-02T19:56:51.330 回答