535-5.7.8不接受用户名和密码错误

时间:2015-09-08 06:09:18

标签: ruby-on-rails actionmailer

使用动作邮件程序通过我的Gmail帐户发送邮件时收到此错误。

  

SweepstakesController#show中的Net :: SMTPAuthenticationError   535-5.7.8不接受用户名和密码    了解更多信息:          ParticipantMailer.winner_confirmation(@result).deliver_now!

我已经仔细检查了我的电子邮件和密码,我已经重新启动了我的服务器,同时我已经完成了所有与此错误相关的问题并实施了每个答案,但无济于事。 我的development.rb文件是:

config.action_mailer.default_url_options = { host: 'localhost', port:        3000}
ActionMailer::Base.delivery_method= :smtp
ActionMailer::Base.smtp_settings = {
  :address =>"smtp.gmail.com",
  :port => 587,
  :domain => "gmail.com",
  :user_name => "my_email@gmail.com",
  :password => "my_password",
  :authentication => 'plain',
  :openssl_verify_mode => 'none' 
}

控制器中的逻辑:

def show
  @sweepstake = Sweepstake.find(params[:id])
  @participant = Participant.where(:sweepstake_id => @sweepstake.id )
  b = @sweepstake.winner_count
  @result = Array.new 
  b.times do 
    @result << @participant[rand(@participant.count)]
  end
  ParticipantMailer.winner_confirmation(@result).deliver_now!
end

participant_mailer.rb文件:

class ParticipantMailer < ApplicationMailer
  default from: 'rajesh010794@gmail.com'

  def winner_confirmation(result)
    @result = result
    @url  = 'http://example.com/login'

    Rails.logger.info(@result.inspect)
    @result.each do |i|
      mail(to: i.participant_email, subject: 'Congratulation')
    end
  end
end

3 个答案:

答案 0 :(得分:2)

我找到了答案Goto config/initializers/setup_mail.rb检查那里的配置是否与development.rb文件中写的配置相匹配。它在两个文件中应如下所示:

config.action_mailer.smtp_settings = {
     :address =>"smtp.gmail.com",
     :port => 587,
     :domain => "gmail.com",
     :user_name => "my_mail@gmail.com",
     :password => "**********",
     :authentication => 'plain',
     :enable_starttls_auto => true,
     :openssl_verify_mode => 'none' 
     } 

这解决了我的问题。

答案 1 :(得分:1)

根据RailsGuides,gmail配置如下所示:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'example.com',
  user_name:            '<username>',
  password:             '<password>',
  authentication:       'plain',
  enable_starttls_auto: true  }

您遗失了enable_starttls_auto。我认为在domain中你应该放置你的域名,而不是gmail.com

在我为帐户开启less secure applications后,我使用了上述设置。

另外,我在Google文档中读过您可能需要使用Unlock Captcha

答案 2 :(得分:0)

我只花了几个小时来解决这个问题,并为Gmail重新配置Railstwo-factor authorization设置,等等,最后,真正的问题是我潜入了这个文件我的应用程式- config/initializers/setup_mail.rb-从几年前开始,它的设置就很旧。删除此文件后,Stack上用于解决此问题的所有其他建议均起作用。