Rails 4 Net :: SMTPAuthenticationError:535#5.7.0身份验证失败

时间:2014-09-09 00:52:34

标签: ruby-on-rails email ruby-on-rails-4 heroku actionmailer

我正在为我的大学的学生组织建立一个电子邮件列表。该组织有大约6000名成员,为避免成本我已获得使用学校电子邮件服务器的许可,他们为我创建了一个帐户。

我已经使用我的邮件客户端测试了该帐户,一切似乎都运行良好,但当我尝试通过我的Rails 4应用程序发送时,我收到错误:

Net::SMTPAuthenticationError: 535 #5.7.0 Authentication failed

我的配置如下:

application.rb中

config.action_mailer.smtp_settings = 
{
    :address   => "smtp.school.edu",
    :port      => 25, 
    :enable_starttls_auto => true, 
    :user_name => "account@school.edu",
    :password  => "mypassword", 
    :authentication => 'login',
    :domain => 'http://myapp.herokuapp.com/' 
}

同样,凭据都是正确的,我已通过我的邮件客户端对其进行了测试,并且还与服务器管理员坐下来确认我的配置中的所有内容都与端口和凭据一致。

我被告知smtp服务器“向公众开放”并且没有任何阻止连接,我们检查了他们的日志,他们甚至没有看到尝试从我的应用程序连接。

任何人都知道这里出了什么问题?有什么设置我不知道可能会关闭吗?

5 个答案:

答案 0 :(得分:6)

尝试将openssl_verify_mode => 'none'添加到您的动作邮件设置:

config.action_mailer.smtp_settings = 
{
    :address   => "smtp.school.edu",
    :port      => 25, 
    :enable_starttls_auto => true, 
    :user_name => "account@school.edu",
    :password  => "mypassword", 
    :authentication => 'login',
    :domain => 'http://myapp.herokuapp.com/',
    :openssl_verify_mode => 'none'
}

当然,我们正在使用Rails 3,但这对我有用。我们的问题是我们的证书是自签名的,Rails使用的库认为这是一个问题。 这是一个article,讨论了该选项。

答案 1 :(得分:1)

“域名”应该指向“school.edu”而不是“herokuapp.com”吗?我知道当你通过action_mailer设置为gmail设置smtp时,你有类似的东西:

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

答案 2 :(得分:1)

域名是否应包含“http://”?

答案 3 :(得分:1)

在文件夹setup_mail.rb中创建文件config/initializers/并输入代码: -

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.smtp_settings = {
  :address   => "smtp.school.edu",
  :domain => 'myapp.herokuapp.com',
  :port      => 25,
  :user_name => "account@school.edu",
  :password  => "mypassword", 
  :authentication => :plain,
  :enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "myapp.herokuapp.com"

答案 4 :(得分:0)

通过以下步骤解决了我的问题。

config.action_mailer.default :charset => "utf-8"
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',
    port: 587,
    domain: 'mysite.com',
    user_name: myemail@gmail.com,
    password: mypassword,
    authentication: 'plain',
    enable_starttls_auto: true
}

如果您在帐户设置中关闭了安全性较低的应用,Google会尝试阻止您的登录。因此,请按照此link和“开启”访问不太安全的应用。