简体   繁体   中英

Connection refused - connect(2) for “localhost” port 587

I'm getting this error in development when trying to create a user. Who can enlighten me what have I done wrong?

在此处输入图片说明

users_controller.rb

  def create
    @user = User.new(user_params)
    if @user.save
      session[:user_id] = @user.id
      UserMailer.signup_confirmation(@user).deliver_now
      redirect_to user_tasks_path(current_user.id), notice: "Thank you for signing up!"
    else
      render "new"
    end
  end

environments/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 = true

  config.action_mailer.delivery_method = :smtp

  config.action_mailer.smtp_settings = {
  adress: "smtp@gmail.com",
  port: 587,
  authentication: "plain",
  enable_starttls_auto: true,
  user_name: ENV["GMAIL_USERNAME"],
  password: ENV["GMAIL_PASSWORD"]
  }

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

mailers/application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  default from: "alexnotonfire@example.com"
  layout 'mailer'
end

mailers/user_mailer.rb

class UserMailer < ApplicationMailer

  # Subject can be set in your I18n file at config/locales/en.yml
  # with the following lookup:
  #
  #   en.user_mailer.signup_confirmation.subject
  #
  def signup_confirmation(user)
    @user = user

    mail to: user.email, subject: "Sign Up Confirmation"
  end
end

views/user_mailer/signup_confirmation.text.erb

<%= @user.first_name %>,

Thank you for signing up!

Connection is getting refused by gmail while attempting to deliver the mail. I had almost the same issue and lately I found out that I have not enabled telnet client on my system which ping gmail. So I have enabled telnet client on my system (Windows 7). Also run a telnet test to troubleshoot the connection. I have followed this link [ http://techblissonline.com/troubleshoot-gmail-smtp-server-connection/]http://techblissonline.com/troubleshoot-gmail-smtp-server-connection/ to carry out telnet test. If you are able to ping gmail and still you are getting error, then go to gmail settings and allow less secure apps to access your account.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM