首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云控制Rails 3邮件

云控制Rails 3邮件
EN

Stack Overflow用户
提问于 2014-11-13 10:06:50
回答 2查看 105关注 0票数 0

问题:云控制服务器上的Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):

环境smtp设置:

代码语言:javascript
复制
   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并指示服务器控制台上的地址和端口,则可以正确地发送邮件:

代码语言:javascript
复制
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设置吗?还是我错过了一些关于云层控制平台的东西?

它实际上是临时服务器..。

代码语言:javascript
复制
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:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-20 10:07:31

问题就在staging.rb中:

代码语言:javascript
复制
config.after_initialize do
  #adding smtp settings in this block was invisible (or too late) for staging.rb
end

它可能会帮助那些不熟悉rails初始化过程的人。我不是真的:)

票数 1
EN

Stack Overflow用户

发布于 2014-12-30 01:31:07

对于其他遇到这个问题的人来说,Sergii的诊断是正确的,但是有一个解决办法。在将smtp_settings设置在config.action_mailer上之后,将它们复制到ActionMailer::Base.smtp_settings:

代码语言:javascript
复制
ActionMailer::Base.smtp_settings = config.action_mailer.smtp_settings
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26906184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档