为什么我的密码重置不起作用? rails tutorial ch

时间:2017-12-07 04:03:36

标签: ruby-on-rails ruby sendgrid railstutorial.org

目前正在关注第12章关于密码重置的Michael Hartl的Rails教程。我正在使用sendgrid在生产中发送帐户激活电子邮件。但是,我没有收到电子邮件。代码似乎正在工作并在Heroku日志中生成一个电子邮件模板,但它永远不会在我的ınbox中。在说我的sendgrid帐户未经验证之前我遇到了问题,我已经解决了这个问题,现在已经过验证。 (除了白色标记阶段,不确定这是否有所不同)。 sendgrid帐户现已激活,但我仍然在Heroku日志中遇到各种错误,我需要帮助来理解它们。

Heroku日志:从下面的Heroku日志中可以看出。激活电子邮件已生成但从未到达。然后,最后有一些错误,我不知道如何处理。

我的问题是:

  • 什么是内部服务器错误?
  • “535身份验证失败”是什么意思?
  • 哪个帐户是“帐户禁用”是指? sendgrid? (它不是 我刚登录时已禁用)
  • 我的send_password_reset_email方法出了什么问题?据我所知,它与教程中的代码相同。
  • 我的create' method in app / controllers / password_resets_controller.in行rb:15`
  • 出了什么问题

我已按照教程中的所有步骤操作,密码重置电子邮件既未到达,也未触及帐户激活电子邮件。我错过了什么?

2017-12-07T03:40:03.290409+00:00 app[web.1]: I, [2017-12-07T03:40:03.290353 #10]  INFO -- : [f8b6a375-a51d-4d50-b061-30e5a82ea5e3] Completed 500 Internal Server Error in 457ms (ActiveRecord: 22.0ms)
2017-12-07T03:40:03.290977+00:00 app[web.1]: F, [2017-12-07T03:40:03.290923 #10] FATAL -- : [f8b6a375-a51d-4d50-b061-30e5a82ea5e3]   
2017-12-07T03:40:03.291023+00:00 app[web.1]: F, [2017-12-07T03:40:03.290980 #10] FATAL -- : [f8b6a375-a51d-4d50-b061-30e5a82ea5e3] Net::SMTPAuthenticationError (535 Authentication failed: account disabled
2017-12-07T03:40:03.291024+00:00 app[web.1]: ):
2017-12-07T03:40:03.291064+00:00 app[web.1]: F, [2017-12-07T03:40:03.291025 #10] FATAL -- : [f8b6a375-a51d-4d50-b061-30e5a82ea5e3]   
2017-12-07T03:40:03.291111+00:00 app[web.1]: F, [2017-12-07T03:40:03.291074 #10] FATAL -- : [f8b6a375-a51d-4d50-b061-30e5a82ea5e3] app/models/user.rb:77:in `send_password_reset_email'
2017-12-07T03:40:03.291112+00:00 app[web.1]: [f8b6a375-a51d-4d50-b061-30e5a82ea5e3] app/controllers/password_resets_controller.rb:15:in `create'

app / controllers / password_resets_controller.in line rb:15:

中的方法
class PasswordResetsController < ApplicationController

  before_action :get_user,   only: [:edit, :update]
  before_action :valid_user, only: [:edit, :update]
  before_action :check_expiration, only: [:edit, :update]    # Case (1) expired password reset


  def new
  end

  def create
    @user = User.find_by(email: params[:password_reset][:email].downcase)
    if @user
      @user.create_reset_digest
      @user.send_password_reset_email
      flash[:info] = "Email sent with password reset instructions"
      redirect_to root_url
    else
      flash.now[:danger] = "Email address not found"
      render 'new'
    end

应用程序/ models.user:

  # Sends password reset email.
  def send_password_reset_email
    UserMailer.password_reset(self).deliver_now
  end

编辑:SMTP设置:

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = 'https://still-beyond-10331.herokuapp.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '587',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'heroku.com',
    :enable_starttls_auto => true
  }

0 个答案:

没有答案