2012-10-18 47 views
0

我有一个代码UserMailer类:为什么我的Devise gem的可恢复模块不工作?

User.rb:

devise :database_authenticatable, :registerable, 
:recoverable, :rememberable, :trackable, :validatable 

    ----------------- 

class UserMailer < ActionMailer::Base 

default :from => "[email protected]" 

def password_reset(user, password) 
    @user = user 
    @password = password 
    mail(:to => user.email, 
    :subject => 'Password Reset Notification') 
    end 

    def congrats_email(user) 
    mail(to: user.email, subject: "Welcome Message") 
end 

end 

为setup_mail.rb:

ActionMailer::Base.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => "gmail.com", 
    :user_name   => "denys.medynskyi", 
    :password    => "********", 
    :authentication  => "plain", 
    :enable_starttls_auto => true 
    } 

和devise.rb:

Devise.setup do |config| 
    # ==> Mailer Configuration 
    config.mailer_sender = "UserMailer" 
end 

和忘记密码提交后,我去了一些页面,但它并没有告诉我任何的通知和做不发送电子邮件。

我在做什么错了?

回答

0

我不是100%肯定这是任何或所有的问题的原因,但如果你想用Devise工作,覆盖了一些默认的邮件的行为,但不所有的话,你应该从Devise::Mailer而不是ActionMailer::Base继承。

所以

class UserMailer < Devise::Mailer 

编辑:在Devise::MailerDevise调用来呈现密码重置邮件模板的方法是reset_password_instructions。所以你的方法甚至不会覆盖。另外,Devise的工作方式是最终调用发送指令电子邮件的方法的资源。 reset_password_instructions方法的作用就是从视图模板生成电子邮件。所以在我看来,上面的代码实际上并不适用于正常的流程。什么叫您的应用password_reset

+0

这很奇怪,但它在过去有效。我会尝试。 – MID

+0

它应该发送带有说明的电子邮件。 – MID

相关问题