edhog
edhog

Reputation: 513

Error sending emails with Rails 4 & Devise (connection refused, port 25)

I'be been having some massive issues getting emails to send. I've tried multiple ways of doing things; using gmail, mailgun, sendgrid, the mailgun gem etc, no luck at all. For some reason it's trying to send using port 25 although, as you can see below, I'm specifying port 587. The error I get is:

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

My development.rb file is as follows:

  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 => '[email protected]',
  :password => '(mailgun password)',
  :domain => 'sandbox3ed8de9510c845c68bf0d867a8f25394.mailgun.org',
  :authentication => :plain,
  :enable_starttls_auto => true
  }

I have looked around for solutions however none seem to solve the issue. I'm totally out of ideas.

entire Development.rb document:

    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: "[email protected]",
    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

Upvotes: 3

Views: 1371

Answers (4)

bk chovatiya
bk chovatiya

Reputation: 223

Try This configuration

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
}

Upvotes: 3

Tejas
Tejas

Reputation: 186

Use the below settigns in production.rb

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 => '[email protected]',
    :password => '(mailgun password)',
    :domain => 'sandbox3ed8de9510c845c68bf0d867a8f25394.mailgun.org',
    :authentication => :plain
  }

Upvotes: 2

add same mail configuration in production.rb also. Restart the server and check

Upvotes: 2

Chakreshwar Sharma
Chakreshwar Sharma

Reputation: 2610

Use the below 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
}

If you get SMTP authentication error , then click on http://www.google.com/accounts/DisplayUnlockCaptcha & enable it. It will enable google for registering new apps within 10 minutes

Upvotes: 2

Related Questions