【问题标题】:Connection refused - connect(2) for "localhost" port 587连接被拒绝 - “localhost”端口 587 的连接(2)
【发布时间】:2015-08-06 17:03:41
【问题描述】:

我在尝试创建用户时在开发中遇到此错误。谁能告诉我我做错了什么?

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

ma​​ilers/application_mailer.rb

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

ma​​ilers/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!

【问题讨论】:

  • 您的配置中有错字 - adress - 而且您提供的地址不是有效的 SMTP 地址。
  • 在您的开发环境中使用 mailcatcher 而不是 Gmail。
  • @max 谢谢,我一会儿试试。
  • 这个adress: "smtp@gmail.com"应该是address: "smtp.gmail.com"
  • @Pavan 它正在取得进展。现在我遇到了另一个错误。

标签: ruby-on-rails actionmailer


【解决方案1】:

在尝试投递邮件时,连接被 gmail 拒绝。我遇到了几乎相同的问题,最近我发现我没有在我的系统上启用 telnet 客户端来 ping gmail。所以我在我的系统(Windows 7)上启用了 telnet 客户端。还运行 telnet 测试以排除连接故障。我已按照此链接 [http://techblissonline.com/troubleshoot-gmail-smtp-server-connection/]http://techblissonline.com/troubleshoot-gmail-smtp-server-connection/ 进行 telnet 测试。如果您能够 ping gmail 并且仍然出现错误,请转到 gmail 设置并允许不太安全的应用程序访问您的帐户。

【讨论】:

  • 你可以试试 465 和 25 端口。检查哪个端口适合你。
  • 其实我现在又遇到了麻烦。它说“需要 530-5.5.1 身份验证”。但是感谢您的解释
  • 帕万是对的。地址应为"smtp.gmail.com",请更正配置文件中的拼写错误。
  • 要解决“530-5.5.1 Authentication Required”问题,您需要按照答案的最后一行。基本上更改了低安全应用程序可以访问的 gmail 设置。要了解如何操作,请查看此https://support.google.com/accounts/answer/6010255?hl=en
  • 是的,但这还不够。我解决了这个问题。
猜你喜欢
  • 2016-01-18
  • 2015-12-03
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2018-04-11
  • 2019-01-07
  • 2013-06-24
相关资源
最近更新 更多