2016-01-25 28 views
0

試圖在生產發送電子郵件時,我得到的錯誤Ruby on Rails的 - 行動的郵件錯誤在生產

Connection refused - connect(2) for "localhost" port 25 

。一切工作正常在開發模式。我也可以通過端口465上的telnet連接到我的郵件服務器。我也使用Devise的寶石,這需要我在我的development.rb文件中設置

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

。我不知道這是否會導致任何問題。我已經刪除它並再次測試,但仍然有相同的錯誤。

我一直在這個小時工作,所以任何幫助將不勝感激。這是我的文件。

這裏是我的development.rb

Rails.application.configure do 
    # Settings specified here will take precedence over those in config/application.rb. 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the web server when you make code changes. 
    config.cache_classes = false 

    # Do not eager load code on boot. 
    config.eager_load = false 

    # Show full error reports and disable caching. 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    # Don't care if the mailer can't send. 
    config.action_mailer.raise_delivery_errors = false 

    #DEVISE WANTS THIS 
    config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } 

    # Print deprecation notices to the Rails logger. 
    config.active_support.deprecation = :log 

    # Raise an error on page load if there are pending migrations. 
    config.active_record.migration_error = :page_load 

    # Debug mode disables concatenation and preprocessing of assets. 
    # This option may cause significant delays in view rendering with a large 
    # number of complex assets. 
    config.assets.debug = true 

    # Asset digests allow you to set far-future HTTP expiration dates on all assets, 
    # yet still be able to expire them through the digest params. 
    config.assets.digest = true 

    # Adds additional error checking when serving assets at runtime. 
    # Checks for improperly declared sprockets dependencies. 
    # Raises helpful error messages. 
    config.assets.raise_runtime_errors = true 

    # Raises error for missing translations 
    # config.action_view.raise_on_missing_translations = true 

    #Action Mailer 
    config.action_mailer.perform_deliveries = true 

    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
     address:    'p3plcpnl0334.prod.phx3.secureserver.net', 
     port:     465, 
     domain:    'finaltouchsecurity.com', 
     user_name:   '[email protected]', 
     password:    'xxxxxxxxxx', 
     authentication:  'plain', 
     #enable_starttls_auto: true 
     ssl: true } 

end 

這裏是我的production.rb

Rails.application.configure do 
    # Settings specified here will take precedence over those in config/application.rb. 

    # Code is not reloaded between requests. 
    config.cache_classes = true 

    # Eager load code on boot. This eager loads most of Rails and 
    # your application in memory, allowing both threaded web servers 
    # and those relying on copy on write to perform better. 
    # Rake tasks automatically ignore this option for performance. 
    config.eager_load = true 

    # Full error reports are disabled and caching is turned on. 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 

    # Enable Rack::Cache to put a simple HTTP cache in front of your application 
    # Add `rack-cache` to your Gemfile before enabling this. 
    # For large-scale production use, consider using a caching reverse proxy like 
    # NGINX, varnish or squid. 
    # config.action_dispatch.rack_cache = true 

    # Disable serving static files from the `/public` folder by default since 
    # Apache or NGINX already handles this. 
    config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 

    # Compress JavaScripts and CSS. 
    config.assets.js_compressor = :uglifier 
    # config.assets.css_compressor = :sass 

    # Do not fallback to assets pipeline if a precompiled asset is missed. 
    config.assets.compile = false 

    # Asset digests allow you to set far-future HTTP expiration dates on all assets, 
    # yet still be able to expire them through the digest params. 
    config.assets.digest = true 

    # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb 

    # Specifies the header that your server uses for sending files. 
    # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache 
    # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX 

    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 
    # config.force_ssl = true 

    # Use the lowest log level to ensure availability of diagnostic information 
    # when problems arise. 
    config.log_level = :debug 

    # Prepend all log lines with the following tags. 
    # config.log_tags = [ :subdomain, :uuid ] 

    # Use a different logger for distributed setups. 
    # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) 

    # Use a different cache store in production. 
    # config.cache_store = :mem_cache_store 

    # Enable serving of images, stylesheets, and JavaScripts from an asset server. 
    # config.action_controller.asset_host = 'http://assets.example.com' 

    # Ignore bad email addresses and do not raise email delivery errors. 
    # Set this to true and configure the email server for immediate delivery to raise delivery errors. 
    # config.action_mailer.raise_delivery_errors = false 

    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation cannot be found). 
    config.i18n.fallbacks = true 

    # Send deprecation notices to registered listeners. 
    config.active_support.deprecation = :notify 

    # Use default logging formatter so that PID and timestamp are not suppressed. 
    config.log_formatter = ::Logger::Formatter.new 

    # Do not dump schema after migrations. 
    config.active_record.dump_schema_after_migration = false 
end 

我的控制器

def create 
    @job = Job.find(session[:edit_job]) 
    @receipt = @job.receipts.create(params.require(:receipt).permit(:email, :information)) 
    if @receipt.valid? 
     begin 
      email 
      render :js => "window.location = '/jobs/#{session[:edit_job]}/edit'" 
     rescue 
      @receipt.destroy 
      flash[:error] = "Error Sending Email!" 
      render "layouts/fail" 
     end 
    else 
     flash[:error] = "Error Creating Receipt!" 
     render "layouts/fail" 
    end 
end 

def email 
      CustomerMailer.email_receipt(@receipt).deliver_now 
      flash[:notice] = "Email Sent Successfully."  
end 
+0

我想你在您的生產環境中不提供smtp設置。 –

+0

我該怎麼做?我對rails非常陌生。這是我第一個應用於生產的應用程序。 @HarryBomrah –

回答

0

嘗試把這些設置在你的production.rb,看看它作品。

config.action_mailer.perform_deliveries = true 

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    address:    'p3plcpnl0334.prod.phx3.secureserver.net', 
    port:     465, 
    domain:    'finaltouchsecurity.com', 
    user_name:   '[email protected]', 
    password:    'xxxxxxxxxx', 
    authentication:  'plain', 
    #enable_starttls_auto: true 
    ssl: true 
} 
0

你必須你production.rb設置喜歡你的關於「config.action_mailer」 development.rb,也許這就是爲什麼你可以發送電子郵件的發展,但在生產中失敗