首页 文章

如何在自定义Devise电子邮件中设置自定义电子邮件主题?

提问于
浏览
5

我在Rails 3应用程序中使用Devise来创建帐户 . 我有不同类型的用户,因此我想根据用户类型发送自定义密码恢复电子邮件 .

我能够发送自定义电子邮件,我还没有找到在该电子邮件上设置自定义 Headers 的方法 . 我特别感兴趣的是设置电子邮件的主题 .

我做了以下事情:

  • 使用自定义方法创建了自定义Devise邮件程序 . 此方法使用参数调用devise_mail . 在这种情况下,自定义邮件程序称为"reset_partner_instructions" . 我可以调用此邮件并成功发送来自我的用户模型的电子邮件 .

  • 创建了一个自定义的电子邮件视图模板,该模板已成功从 devise_mail 调用 .

我的自定义邮件看起来像这样:

class AccountMailer < Devise::Mailer
  helper :application # gives access to all helpers defined within application_helper.
  def reset_partner_instructions(record, opts={})
    devise_mail(record, :reset_partner_instructions, opts)
  end
end

问题是电子邮件的主题始终是“重置合作伙伴说明” . 我相信Devise正在从邮件模板的名称生成这个 Headers .

在本教程https://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailer中,他们调用以下代码:

def confirmation_instructions(record, opts={})
  headers["Custom-header"] = "Bar"
  super
end

由于我直接调用“devise_mail”,我没有看到如何将邮件传递给邮件程序 . 我可以使用简单的设置或方法来设置电子邮件主题吗?

4 回答

  • 15

    devise helper

    class AccountMailer < Devise::Mailer
    
    
       def confirmation_instructions(record, opts={})
        headers = {
            :subject => "Subject Here"
        }
        super
      end
    
    end
    

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

    并设置自己的主题

    mailer:
        confirmation_instructions:
            subject: 'Confirmation instructions'
    
  • -1

    这是一个非常古老的问题,它可能对你有帮助,

    对于自定义主题:

    • 创建一个文件 config/locales/devise.en.yml

    • 添加如下所示的内容,确保执行 indentation properly with 2 spaces as you do in database.yml file .

    en: devise: mailer: confirmation_instructions: subject: 'Verification subject here' reset_password_instructions: subject: 'Reset password subject here'

  • 0

    我意识到我应该只使用ActionMailer来完成这项任务 . Devise没有给我额外的功能,因为我试图生成一个自定义邮件,我可以在Devise之外做 .

  • 2

    有's no need to set up a custom mailer or override Devise' s confirmation_instructions 方法 .

    设想让你将可选参数传递给 confirmation_instructions 方法,该方法将与Devise的默认选项合并( opts 哈希传递给Devise的headers_for助手) .

    因此,您可以使用以下代码发送带有自定义主题的确认说明:

    Devise::Mailer.confirmation_instructions(user, {subject: "Custom Subject"}).deliver
    

相关问题