簡體   English   中英

Rails 4 Mailer在生產Digital Ocean服務器中不起作用

[英]Rails 4 Mailer not working in production Digital Ocean server

我的應用程序中有一個簡單的聯系表單,該表單使用我的Gmail帳戶將電子郵件發送到另一個Gmail帳戶。 由於某種原因,它在開發中完美地發送了郵件,但在生產中卻沒有。 我將自己的網站托管在DigitalOcean一鍵式Rails應用程序中。 當我嘗試以實時版本發送郵件時,網站掛了一段時間,並顯示“很抱歉,出了點問題。”

的Gemfile

#Mailer
gem 'mail'

development.rb

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.
  config.cache_classes = false
  config.eager_load = false
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.active_support.deprecation = :log
  config.active_record.migration_error = :page_load
  config.assets.debug = true
  config.assets.digest = true
  config.assets.raise_runtime_errors = true

  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 465,                
    :user_name            => 'foo@gmail.com',
    :password             => 'foo',        
    :authentication       => :login,
    :ssl                  => true,
    :tls                  => true,
    :enable_starttls_auto => true
  }
end

production.rb

Rails.application.configure do

  config.cache_classes = true

  config.eager_load = true

  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

  config.assets.js_compressor = :uglifier

  config.assets.compile = false

  config.assets.digest = true

  config.log_level = :debug

  config.i18n.fallbacks = true

  config.active_support.deprecation = :notify

  config.log_formatter = ::Logger::Formatter.new

  config.active_record.dump_schema_after_migration = false

  config.action_mailer.default_url_options = { host: 'foo.com.mx' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 465,                
    :user_name            => 'foo@gmail.com',
    :password             => 'foo',        
    :authentication       => :login,
    :ssl                  => true,
    :tls                  => true,
    :enable_starttls_auto => true
  }
end

我從服務台獲得了答案,您可以通過取消注釋該行,在etc/gai.conf文件中通過將IPv4優先於IPv6來解決此問題。

#precedence ::ffff:0:0/96 100

其背后的原因是,默認情況下,Digital Ocean會阻止通過IPv6的傳出SMTP請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM