我有UserMailer类,下一个代码:
User.rb:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
-----------------
class UserMailer < ActionMailer::Base
default :from => "denys.medynskyi@gmail.com"
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
忘记密码提交后我转到某个页面,但它没有告诉我任何通知adn不发送电子邮件。
我做错了什么?
答案 0 :(得分:0)
我不是100%确定这是导致您遇到任何或所有问题的原因,但如果您尝试使用Devise
,则会覆盖某些默认邮件程序行为但不会所有,你应该继承Devise::Mailer
而不是ActionMailer::Base
。
所以
class UserMailer < Devise::Mailer
编辑:Devise
在Devise::Mailer
中调用以呈现密码重置邮件模板的方法为reset_password_instructions
。所以你的方法甚至没有覆盖它。此外,Devise
的工作方式,它是最终调用发送指令电子邮件的方法的资源。 reset_password_instructions
方法的工作只是从视图模板生成电子邮件。所以在我看来,你上面得到的代码并没有真正使用正常的Devise
流程。在您的应用中调用password_reset
的内容是什么?