使用Rails ActionMailer的Ne​​t :: SMTPAuthenticationError

时间:2014-04-10 05:50:20

标签: ruby-on-rails actionmailer

我刚刚启动了一个我在1月份建立的Rails应用程序,该应用程序将通过Gmail的smtp协议发送电子邮件。今天我得到一个Net :: SMTPAuthenticationError,需要530-5.5.1身份验证。我搜索了这个并尝试了所有建议,例如重新登录Gmail,解锁验证码以及更改密码。这些都不起作用。

这是我的development.rb代码:

config.action_mailer.default_url_options = { host: "localhost:3000" }

config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true

config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
  authentication: "plain",
  enable_starttls_auto: true,
  user_name: ENV["GMAIL_USERNAME"],
  password: ENV["GMAIL_PASSWORD"]
} 

更新

这很奇怪。我将服务器更改为smtp.yahoo.com,并且我收到了相同的Rails错误。

更新2 自从我上次尝试这个应用程序以来,我还有一个新的ISP。这可能是个问题吗?

4 个答案:

答案 0 :(得分:1)

我认为这可能是Google对访问您帐户的网站持怀疑态度(我最近也有类似的东西)。 登录您的Gmail帐户并查看页面顶部的警告横幅,指出此可疑活动问题。

点击页面顶部的警告横幅。它会带你到一个页面,你可以通知Gmail(点击一个按钮...也许是一个单词验证请求)这是你试图访问你的帐户。甚至应该有一本小说尝试访问您帐户的实体(在本例中为您的服务器)位置的小地图。

他们本应该给你发一封关于此事的电子邮件。 电子邮件应该如下所示:

  

最近有人使用您的密码尝试登录您的Google   帐户th.good@gmail.com。这个人正在使用这样的应用程序   作为电子邮件客户端或移动设备。

     

我们阻止了登录尝试,以防这是一名劫机者   访问您的帐户。请查看登录尝试的详细信息:   ...如果这是你,你无法访问你的   帐户,完成

中列出的故障排除步骤

http://support.google.com/mail?p=client_login

希望这有帮助。

答案 1 :(得分:0)

只需更改身份验证类型:

config.action_mailer.smtp_settings = {
      :address              => 'smtp.gmail.com',
      :port                 => 587,
      :domain               => 'gmail.com',
      :user_name            => ENV["GMAIL_USERNAME"],
      :password             => ENV["GMAIL_PASSWORD"]
      :authentication       => 'login',
      :enable_starttls_auto => true
}

并确保您拥有ENV["GMAIL_USERNAME"]ENV["GMAIL_PASSWORD"]的值。它应该是一个真正的Gmail电子邮件ID(用户名)和密码。它会正常工作。

希望有所帮助:)

答案 2 :(得分:0)

我认为你正在使用费加罗宝石。您必须在ENV["GMAIL_USERNAME"]文件中设置ENV["GMAIL_PASSWORD"]application.ymlCheck documentation of Figaro Gem

检查你的设定。

config.action_mailer.smtp_settings = {
    :address              => 'smtp.gmail.com',
    :port                 => 587,
    :domain               => 'gmail.com',
    :user_name            => 'my_nick@gmail.com',
    :password             => 'secret_password',
    :authentication       => 'login',
    :enable_starttls_auto => true
  }

答案 3 :(得分:-1)

好吧,我必须在笔记本电脑上添加Linux旁边的Windows分区。重新安装后,问题就消失了......所以我不知道问题是什么。