Errno::ECONNREFUSED(连接被拒绝 - connect(2) for nil port 587):对于 Heroku 上的 Rails
Errno::ECONNREFUSED (Connection refused - connect(2) for nil port 587): for Rails on Heroku
我怀疑我在这里遗漏了一些基本的东西,但是我一直在努力解决这个问题,但没有运气。
Rails 4.2.5
Ruby2.2.3p173
在 localhost
上使用 Amazon SES(我关注 this stellar guide)可以正常发送电子邮件,但在 Heroku 生产环境中则不行。我在 post:
的标题中收到错误
Errno::ECONNREFUSED (Connection refused - connect(2) for nil port 587)
我怀疑问题的核心是那里的nil
,但我一直没能弄清楚它是从哪里来的。似乎没有其他人有这个问题,甚至调试级别的日志也不给我更多的工作。
我读过几十本 post,例如 this。但据我所知,我的配置符合所有规格。
任何 help/recommendations 将不胜感激。
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
}
设置你的环境变量,确保你的 SES 端点处于生产模式,你应该是好的。
我怀疑我在这里遗漏了一些基本的东西,但是我一直在努力解决这个问题,但没有运气。
Rails 4.2.5
Ruby2.2.3p173
在 localhost
上使用 Amazon SES(我关注 this stellar guide)可以正常发送电子邮件,但在 Heroku 生产环境中则不行。我在 post:
Errno::ECONNREFUSED (Connection refused - connect(2) for nil port 587)
我怀疑问题的核心是那里的nil
,但我一直没能弄清楚它是从哪里来的。似乎没有其他人有这个问题,甚至调试级别的日志也不给我更多的工作。
我读过几十本 post,例如 this。但据我所知,我的配置符合所有规格。
任何 help/recommendations 将不胜感激。
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
}
设置你的环境变量,确保你的 SES 端点处于生产模式,你应该是好的。