Rails ActionMailer中的Net :: SMTPAuthenticationError 502 5.5.2

时间:2010-07-30 15:47:35

标签: ruby-on-rails authentication smtp actionmailer

我正在尝试向用户发送确认电子邮件。

但我得到以下错误:

  

Net :: SMTPAuthenticationError(502 5.5.2错误:命令无法识别

production.rb中的配置如下:

# Disable delivery errors, bad email addresses will be ignored
config.action_mailer.raise_delivery_errors = true

# set delivery method to :smtp, :sendmail or :test
config.action_mailer.delivery_method = :smtp

# these options are only needed if you choose smtp delivery
config.action_mailer.smtp_settings = {
  :address        => 'path_to_address_specified_by_my_hoster',
  :port           => 25,
  :domain         => 'my_domain.com',
  :authentication => :plain,
  :user_name      => 'signup@my_domain.com',
  :password       => 'password'
}

我在我的托管服务提供商的用户个人资料中创建了一个邮箱,名为“signup@my_domain.com”

对于创建的邮箱,他们向我发出了登录名和密码:

  

login = verbose_login

     

password = verbose_password

我还没完全理解:user_name。

的确切格式

我应该使用

:user_name => "signup@my_domain.com"

或:

:user_name => "signup"

或:

:user_name => "verbose_login"

或者此字段特定于邮件服务器,我必须要求托管服务提供商支持?

又有什么区别:authentication => :plain和:login?

感谢。

5 个答案:

答案 0 :(得分:6)

这对我很有用:

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
  }

更多信息here

彼得

答案 1 :(得分:1)

我最近遇到了同样的错误,原因是收件人格式不正确

recipient = IO.readlines(emails_filename).first
mail(:to => recipient, :subject => subject)

不要忘记添加strip以获取干净的电子邮件地址。

答案 2 :(得分:1)

我遇到了同样的问题,但这只是一个谷歌配置问题。

出于某种原因,Google阻止了来自未知位置(生产中的应用)的访问权限,因此要解决此问题,您可以转到http://www.google.com/accounts/DisplayUnlockCaptcha并点击“继续”(这将为注册新应用授予10分钟访问权限)。< / p>

另一方面,您可以登录您的Gmail帐户,然后转到https://www.google.com/settings/security/lesssecureapps并启用对安全性较低的应用程序的访问,这对我来说是解决方案!

答案 3 :(得分:0)

请尝试使用浏览器登录一次。 登录可能存在一些问题(它会询问验证码等)。

成功登录后,请尝试使用Rails Mailer。 它现在应该工作。

此问题通常发生在测试帐户中,因为我们通常不会通过浏览器登录。 然后邮件提供商要求确认,如验证码,dob或安全问题的答案等。

答案 4 :(得分:0)

您必须使用ActionMaliler :: Base而不是config

   ActionMailer::Base.smtp_settings   #try this

  config.action_mailer.smtp_settings   #instead of this

将您的smtp代码更改为以下内容。它现在应该工作。

      ActionMailer::Base.smtp_settings = {
         :address        => 'path_to_address_specified_by_my_hoster',
         :port           => 25,
         :domain         => 'my_domain.com',
         :authentication => :plain,
         :user_name      => 'signup@my_domain.com',
         :password       => 'password'
          }