Rails + Heroku:邮件程序的SMTP错误(Net :: SMTPAuthenticationError(535-5.7.1),但有时只是?

时间:2012-11-16 17:34:49

标签: ruby-on-rails

我有一个应用程序,当用户注册时,他们会收到一封确认电子邮件。

这是用户控制器创建操作:

def create
  @user = User.new(params[:user])

  respond_to do |format|
    if @user.save
      UserMailer.registration_confirmation(@user).deliver
      log_in(@user)
      format.html { redirect_to @user, notice: "Welcome to Pholder, #{@user.name}!" }
      format.json { render json: @user, status: :created, location: @user }
    else
      format.html { render action: 'new' }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

正如你在@ user.save之后看到的那样,有一个邮件程序。然而,一个人告诉我他在尝试注册后在heroku上收到错误(“我们很抱歉,出了什么问题”),所以我自己尝试了并且也出错了

2012-11-16T17:21:28+00:00 app[web.1]: Net::SMTPAuthenticationError (535-5.7.1 Please log in with your web browser and then try again. Learn more at
2012-11-16T17:21:28+00:00 app[web.1]: ):
在查看我的代码之后,我尝试了另一个用户,但这次它起作用了。有谁知道为什么?我在另一篇文章中读到,这可能是因为如果有太多用户立即注册它会失败(因为发送了太多的电子邮件),但我认为没有人在那时注册,因为没有多少人知道我的应用程序

smtp设置:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'pacific-ravine-3563.herokuapp.com',
  :user_name            => ENV["EMAIL"],
  :password             => ENV["PASSWORD"],
  :authentication       => "plain",
  :enable_starttls_auto => true
}

config.action_mailer.default_url_options = { :host => 'pacific-ravine-3563.herokuapp.com' }

2 个答案:

答案 0 :(得分:10)

在您证明自己是人类之前,Google可能会阻止您。尝试通过网络浏览器登录此Gmail帐户。如果它不起作用,请在登录并完成测试时尝试访问this link

答案 1 :(得分:1)

如果它对任何人都有帮助,我必须到这里来"认识"我自己的活动(它来自Heroku托管的服务器):https://security.google.com/settings/security/activity