Ruby Devise 2.2添加电子邮件地址和user.email

时间:2014-03-03 08:11:26

标签: ruby devise

目前我正在使用ruby devise gem 2.2.3。我尝试自定义 confirmation_instructions ,以便使用用户电子邮件添加几个电子邮件ID。

应用程序/邮寄者/ my_devise_mailer.rb

class MyDeviseMailer < Devise::Mailer  
  include Devise::Mailers::Helpers

  def confirmation_instructions(record, opts={})   
    opts[:to] = "example1@mail.com, example2@mail.com"    
    super 
  end
end

配置/初始化/ devise.rb

config.mailer = "MyDeviseMailer"

然后,我在我的控制台中运行了以下内容

user = User.first
MyDeviseMailer.delay.confirmation_instructions(user)

我收到了没有正文消息的输出。 PFA

正确 enter image description here

错误 enter image description here

有谁能告诉我我错过了添加/配置的内容?

2 个答案:

答案 0 :(得分:0)

您可以改为创建一个新邮件并修改该邮件的标题:

# app/mailers/my_mailer.rb
class MyMailer < Devise::Mailer
  def headers_for(action, opts)
    if action == :confirmation_instructions    
      super.merge!(to: ['example1@mail.com', 'example2@mail.com'])
    else
      super
    end
  end
end

然后告诉Devise使用你的邮件:

# config/initializers/devise.rb
config.mailer = MyMailer

答案 1 :(得分:0)

super.merge!"无效。因为它将替换给定键的值(:to)。但是,要求是添加两个带有'To'的邮件ID。以下要点工作正常。

class MyMailer < Devise::Mailer  
  include Devise::Mailers::Helpers

  def headers_for(action, opts={})
    begin
      super.merge!(to: [super[:to], 'example1@mail.com', 'example2@mail.com'], template_path: ["devise/mailer"]) if action == :confirmation_instructions
    rescue Exception => e
      super         
    end
  end

end

快乐编码!!