使用Rails 4&发送电子邮件时出错设计(连接被拒绝,端口25)

时间:2016-08-29 12:17:50

标签: ruby-on-rails ruby email devise mailgun

我遇到了一些发送电子邮件的大问题。我尝试了多种做事方式;使用gmail,mailgun,sendgrid,mailgun gem等,根本没有运气。由于某种原因,它试图使用端口25发送,但正如您在下面所见,我指定端口587.我得到的错误是:

Errno :: ECONNREFUSED(拒绝连接 - 连接(2)“localhost”端口25):

我的development.rb文件如下:

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true

  config.action_mailer.smtp_settings = {
  :address => 'smtp.mailgun.org',
  :port => 587,
  :api_key => 'key-5d321b99f722e71f759993ee41512b99',
  :user_name => 'postmaster@sandbox3ed8de9510c845c68bf0d867a8f25394.mailgun.org',
  :password => '(mailgun password)',
  :domain => 'sandbox3ed8de9510c845c68bf0d867a8f25394.mailgun.org',
  :authentication => :plain,
  :enable_starttls_auto => true
  }

我一直在寻找解决方案,但似乎没有人能解决这个问题。我完全没有想法。

整个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       = false
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send.

  # 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

  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    user_name: "chris.edhogben@gmail.com",
    password: "<password>",
    authentication: 'plain',
    enable_starttls_auto: true
  }

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"

  # 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
end

4 个答案:

答案 0 :(得分:3)

production.rb

中使用以下settigns
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true

  ActionMailer::Base.smtp_settings = { 
    :address => 'smtp.mailgun.org',
    :port => 587,
    :user_name => 'postmaster@sandbox3ed8de9510c845c68bf0d867a8f25394.mailgun.org',
    :password => '(mailgun password)',
    :domain => 'sandbox3ed8de9510c845c68bf0d867a8f25394.mailgun.org',
    :authentication => :plain
  }

答案 1 :(得分:3)

尝试此配置

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:  'localhost',
  port:     25,
  domain:   'exmaple.com',
      enable_starttls_auto: false
}

答案 2 :(得分:2)

使用以下settigns for gmail:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
  user_name: "username",
  password: "password",
  authentication: 'plain',
  enable_starttls_auto: true
}

如果您收到SMTP身份验证错误,请点击http://www.google.com/accounts/DisplayUnlockCaptcha&amp;启用它。它将使谷歌能够在10分钟内注册新的应用程序

答案 3 :(得分:2)

在production.rb中添加相同的邮件配置。 重启服务器并检查