问题:云控制服务器上的Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):。
环境smtp设置:
config.action_mailer.smtp_settings = {
address: "smtp.mandrillapp.com",
port: 587,
enable_starttls_auto: true,
user_name: ENV["MANDRILL_USER"],
password: ENV["MANDRILL_PASSWORD"],
authentication: 'login',
domain: 'domain.example'
}当在服务器上检查Project::Application.config.action_mailer.smtp_settings时,请接收以下内容,这是正确的:
{:address=>"smtp.mandrillapp.com", :port=>587, :enable_starttls_auto=>true, :user_name=>"correct_user", :password=>"correct_password", :authentication=>"login"}
但是由于上面提到的问题,猫还是不发电子邮件。Mailer以某种方式跳过此设置并使用:address=>"localhost",如果我直接使用Net::SMTP并指示服务器控制台上的地址和端口,则可以正确地发送邮件:
Net::SMTP.start('smtp.mandrillapp.com', 587, 'some_domain', ENV["MANDRILL_USER"], ENV["MANDRILL_PASSWORD"], :login) do |smtp|
smtp.send_message msgstr,
'user@mail.com',
'user1@mail.com'
end
=> #<Net::SMTP::Response:0x007f1a6e763998 @status="250", @string="250 2.0.0 Ok: queued as B768D480191\n">有人能帮助在cloudcontrol上设置smtp设置吗?还是我错过了一些关于云层控制平台的东西?
它实际上是临时服务器..。
Project::Application.configure do
config.cache_classes = true
config.action_controller.default_url_options = {:host => "staging_server_host"}
config.action_mailer.default_url_options = {:host => 'staging_server_host'}
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.assets.compress = true
config.assets.compile = true
config.assets.digest = true
config.log_level = :debug
config.action_controller.asset_host = "staging_server_host"
config.action_mailer.raise_delivery_errors = true
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.after_initialize do
config.action_mailer.smtp_settings = {
address: "smtp.mandrillapp.com",
port: 587, # ports 587 and 2525 are also supported with STARTTLS
enable_starttls_auto: true, # detects and uses STARTTLS
user_name: ENV["MANDRILL_USER"],
password: ENV["MANDRILL_PASSWORD"], # SMTP password is any valid mandrill API key
authentication: 'login', # Mandrill supports 'plain' or 'login'
domain: 'cloudcontrolapp.com', # your domain to identify your server when connecting
}
end
end编辑:这是我在服务器上找到的Procfile:
web: bundle exec thin start -R config.ru -e $RAILS_ENV -p $PORT
rake: bundle exec rake
worker: bundle exec rake jobs:work
console: bundle exec rails console发布于 2014-11-20 10:07:31
问题就在staging.rb中:
config.after_initialize do
#adding smtp settings in this block was invisible (or too late) for staging.rb
end它可能会帮助那些不熟悉rails初始化过程的人。我不是真的:)
发布于 2014-12-30 01:31:07
对于其他遇到这个问题的人来说,Sergii的诊断是正确的,但是有一个解决办法。在将smtp_settings设置在config.action_mailer上之后,将它们复制到ActionMailer::Base.smtp_settings:
ActionMailer::Base.smtp_settings = config.action_mailer.smtp_settingshttps://stackoverflow.com/questions/26906184
复制相似问题