在连接到Gmail时,Rails 3.1.0.rc5中出现Net::SMTPAuthenticationError错误

14
无论何时我试图在我的Rails应用程序中发送通知,我都会收到以下错误。
Net::SMTPAuthenticationError (535-5.7.1 Username and Password not accepted. Learn more at                   
):
  app/models/friendship.rb:6:in `send_request'
  app/controllers/friends_controller.rb:21:in `make_friendship'

我的development.rb邮件配置设置如下:

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.delivery_method = :smtp
  # Gmail SMTP server setup
  config.action_mailer.smtp_settings = {
        :address => "smtp.gmail.com",
        :enable_starttls_auto => true,
        :port => 587,
        :domain => '@example.com',
        :authentication => :plain,
        :user_name => 'user@gmail.com',
        :password => 'secret'
  }

1
这个在开发阶段是有效的,但在生产环境中失败了,有任何想法吗? - jpemberthy
5个回答

18

我有这个代码并且它对我有效:

  ActionMailer::Base.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 587,
    :user_name            => "name@example.com",
    :password             => 'password',
    :authentication       => "plain",
    :enable_starttls_auto => true
  }

我试过了,现在出现了这个错误信息:Net::SMTPServerBusy (421 服务器繁忙,连接过多) - Uchenna
抱歉,这不足以提供更多帮助。我建议尝试使用其他SMTP服务器,看看是否只有Gmail出现问题。可以尝试使用Sendmail等其他选项。 - joseph
能否使用NET::SMTP从我的公司邮件服务器读取邮件?我尝试过,但出现了Net::SMTPAuthenticationError错误。有什么建议吗? - Dhepthi
我的问题是我只在user_name的值中放入了“name”部分,而不是完整的电子邮件地址“name@example.com”。当我放入完整的电子邮件地址后,邮件发送成功了! - user664833
1
一些教程显示 :domain => "mydomain.com" ... 其他所有内容都匹配了这个答案。一旦我删除了它,它就可以工作了。 - jbnunn

12

登录您在浏览器中使用的帐户,然后访问此页面:

http://www.google.com/accounts/DisplayUnlockCaptcha

这给了你一个10分钟的窗口来使用你想要访问你账户的应用程序进行登录。返回你的Rails应用程序并让它发送一封电子邮件,之后一切都应该正常工作。

救命稻草!这正是我所需要的。 - Dave Sexton
我的问题出现在开发过程中,必须在此启用发件人帐户的设置:https://www.google.com/settings/security/lesssecureapps - lfender6445
我首先打开了这个设置google.com/settings/security/lesssecureapps,然后访问http://www.google.com/accounts/DisplayUnlockCaptcha,在此之后从我的应用程序发送电子邮件,但仍然遇到了这个错误:(Net :: SMTPAuthenticationError(534-5.7.14)。 - Kh Ammad
请问您能否看一下? - Kh Ammad

7

我有一个类似的配置,一直运行良好,但偶尔会出现这个错误,我怀疑是因为谷歌认为该账户可能存在滥用行为,比如过快的登录等(每次发送邮件时)。

您可以通过网页界面手动登录并输入验证码来使其重新工作。如果这种情况经常发生,我建议考虑使用其他解决方案,例如使用自己的MTA或至少在Rails和gmail之间使用本地MTA以便能够发送多封邮件而无需重新登录。在这种情况下,您甚至可以自己传递邮件而不必通过gmail,只需确保设置正确的SPF记录等。


4
您的错误信息中缺少链接! :)
Net::SMTPAuthenticationError (535-5.7.1 Username and Password not accepted. Learn more at https://support.google.com/mail/bin/answer.py?hl=en&answer=14257

因此,有关详细信息,请参见:https://support.google.com/mail/bin/answer.py?hl=zh-CN&answer=14257

  • 确保您输入了完整的电子邮件地址(例如:username@gmail.com)
  • 确保您的邮件客户端未设置过于频繁地检查新邮件。如果您的邮件客户端每隔不到10分钟就检查新消息,则可能会反复请求您的用户名和密码。

4

我遇到了同样的问题:在我的桌面电脑上(开发环境)可以正常工作,但在生产环境中(瑞典的服务器...)却失败了。 你需要登录你的 Gmail 帐户并检查邮件,看看 Google 是否阻止了登录尝试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接