Errno :: ECONNREFUSED(连接被拒绝 - 连接(2)为nil端口587):for Heroku上的Rails

时间:2016-07-30 19:34:43

标签: ruby-on-rails ruby amazon-web-services heroku amazon-ses

我怀疑我在这里遗漏了一些基本的东西,但是在没有运气的情况下与这个人摔跤了一段时间。

Rails 4.2.5
Ruby 2.2.3p173

使用Amazon SES(我跟着this stellar guide)在localhost上发送电子邮件正常,但在Heroku生产环境中却没有。我收到了帖子标题中的错误:

Errno::ECONNREFUSED (Connection refused - connect(2) for nil port 587)

我怀疑问题的核心是那里的nil,但我无法弄清楚它来自哪里。没有其他人似乎有这个问题,甚至调试级别日志也没有给我任何更多的东西。

我已经阅读了许多帖子,例如this。但据我所知,我的配置符合所有规格。

非常感谢任何帮助/建议。

development.rb

# Devise
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

  # Configure mailer
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"

    config.action_mailer.smtp_settings = {
      :address => ENV['SES_ADDRESS'],
      :port => 587,
      :enable_starttls_auto => true,
      :user_name => ENV['SES_ACCESS_KEY_ID'],
      :password => ENV['SES_SECRET'],
      :authentication => :login
    }

production.rb

 # Devise
  config.action_mailer.default_url_options = { :host => 'myappname.herokuapp.com'}

  # Configure mailer
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"

    config.action_mailer.smtp_settings = {
      :address => ENV['SES_ADDRESS'],
      :port => 587,
      :enable_starttls_auto => true,
      :user_name => ENV['SES_ACCESS_KEY_ID'],
      :password => ENV['SES_SECRET'],
      :authentication => :login
    }

1 个答案:

答案 0 :(得分:1)

设置您的环境变量,确保您的SES端点处于生产模式,您应该做得很好。