2012-10-18 51 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

相關問題