我在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 回答
见devise helper
或者您可以在intilizer目录中的
devise.en.yml
文件中更改它并设置自己的主题
这是一个非常古老的问题,它可能对你有帮助,
对于自定义主题:
创建一个文件 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'
我意识到我应该只使用ActionMailer来完成这项任务 . Devise没有给我额外的功能,因为我试图生成一个自定义邮件,我可以在Devise之外做 .
有's no need to set up a custom mailer or override Devise' s
confirmation_instructions
方法 .设想让你将可选参数传递给
confirmation_instructions
方法,该方法将与Devise的默认选项合并(opts
哈希传递给Devise的headers_for助手) .因此,您可以使用以下代码发送带有自定义主题的确认说明: