0

次のコードを持つ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

パスワードの送信を忘れた後、私はいくつかのページに移動しますが、通知が表示されず、電子メールが送信されません。

私が間違っているのは何ですか?

4

1 に答える 1

0

これがあなたの問題の一部またはすべての原因であると 100% 確信しているわけではありませんが、 を使用して、すべてDeviseではなくデフォルトのメーラー動作の一部をオーバーライドしようとしている場合は、ではなくから継承する必要があります。Devise::MailerActionMailer::Base

そう

class UserMailer < Devise::Mailer

編集:パスワード リセット メール テンプレートをレンダリングするためにDevise呼び出すメソッドは です。したがって、あなたの方法はそれを上書きしていません。また、仕組みとしては、指示の電子メールを送信するメソッドを最終的に呼び出すのはリソースです。このメソッドの仕事は、ビュー テンプレートから電子メールを生成することだけです。したがって、上記のコードは通常のフローでは実際には機能していないように見えます。アプリで何を呼び出しますか?Devise::Mailerreset_password_instructionsDevisereset_password_instructionsDevisepassword_reset

于 2012-10-18T15:24:41.783 に答える