连接到 gmail 时 Rails 3.1.0.rc5 中的 Net::SMTPAuthenticationError

Posted

技术标签:

【中文标题】连接到 gmail 时 Rails 3.1.0.rc5 中的 Net::SMTPAuthenticationError【英文标题】:Net::SMTPAuthenticationError in rails 3.1.0.rc5 when connecting to gmail 【发布时间】:2011-10-20 19:48:20 【问题描述】:

每当我尝试在我的 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】:

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

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

这为您提供了 10 分钟的窗口来登录您要允许访问您帐户的应用程序。回到你的 Rails 应用程序并让它发送一封电子邮件,之后一切正常。

【讨论】:

救命稻草!这正是我所需要的。 我的问题正在开发中,必须在此处为发件人帐户启用此设置:google.com/settings/security/lesssecureapps 我首先打开了这个设置 google.com/settings/security/lesssecureapps 然后google.com/accounts/DisplayUnlockCaptcha,之后从我的应用程序发送电子邮件但仍然面临这个错误:( Net::SMTPAuthenticationError (534- 5.7.14 请你看看【参考方案2】:

我遇到了同样的问题:它在我的桌面上工作(在开发环境中),但在生产环境中却失败了(瑞典的服务器......)。 如果 Google 阻止了登录尝试,您必须登录到您的 gmail 帐户并检查电子邮件。

【讨论】:

【参考方案3】:

您缺少错误消息中的链接! :)

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=en&answer=14257

确保您输入了完整的电子邮件地址(例如 username@gmail.com) 确保您的邮件客户端未设置为过于频繁地检查新邮件。如果您的邮件客户端每 10 分钟检查一次以上的新邮件,您的客户端可能会重复请求您的用户名和密码。

【讨论】:

【参考方案4】:

我有一个类似的配置可以正常工作,但有时我会收到此错误,我怀疑这是因为 Google 出于某种原因将该帐户标记为可能滥用,登录太快等(每次发送邮件时) .

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

【讨论】:

【参考方案5】:

我有这个,它对我有用:

  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 Server busy, too many connections 抱歉,这些信息不足以为您提供更多帮助。我会尝试使用不同的 SMTP 服务器来查看是否只是 gmail 有问题。 Sendmail 之类的东西。 是否可以使用 NET::SMTP 从我公司的邮件服务器读取邮件。我试过但得到了 Net::SMTPAuthenticationError。任何建议 我的问题是我只将“name”部分放在user_name 的值中,而不是完整的电子邮件地址“name@example.com”。输入完整的电子邮件地址后,电子邮件已发送! 一些教程显示:domain => "mydomain.com" ...我匹配的所有其他答案。一旦我删除它,它就起作用了。

以上是关于连接到 gmail 时 Rails 3.1.0.rc5 中的 Net::SMTPAuthenticationError的主要内容,如果未能解决你的问题,请参考以下文章

Flask-Mail 尝试连接到 Gmail 时超时

使用 gmail 连接到 POP3 失败

通过命令行连接到 smtp.gmail.com

在 Codeigniter 中无法发送电子邮件 - fsockopen():无法连接到 ssl://smtp.gmail.com:465(连接被拒绝)

将外部数据库连接到 Rails 4 应用程序时出错

Gmail插件可在没有oAuth的情况下连接到非Google服务