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