连接被拒绝 - 带有Gmail的ActionMailer

时间:2016-02-17 04:39:34

标签: ruby-on-rails ruby ruby-on-rails-4

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

这是我在尝试使用ActionMailer发送电子邮件时收到的错误。

的Gemfile

source 'https://rubygems.org'


gem 'rails', '4.2.5'
gem 'pg', '~> 0.15'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'high_voltage', '~> 2.4.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'devise'
gem 'figaro'
gem 'faker'
gem 'paperclip', '~> 4.3'
gem 'instagram'
gem 'pundit'
gem 'amazon-ses-mailer'



group :test do
  gem 'simplecov', :require => false, :group => :test
  gem 'factory_girl_rails', :require => false, :group => :test
  gem 'database_cleaner'
  gem 'rspec-rails'
  gem 'capybara'
  gem 'selenium-webdriver'
  gem 'chromedriver-helper'
end

group :development, :test do
  gem 'byebug'
  gem 'better_errors'
  gem 'binding_of_caller'
end

group :development do
  gem 'web-console', '~> 2.0'

  gem 'spring'
end

group :production do
  gem 'puma'
end

development.rb

  config.action_mailer.delivery_method = :smtp

  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    domain: "joemarion.io",
    user_name: ENV['gmail_username'],
    password: ENV['gmail_password'],
    authentication: "plain",
    enable_starttls_auto: true
  }

  config.action_mailer.default_url_options = { host: "localhost:3000" }

end

application_mailer.rb

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

contact_mailer.rb

class ContactMailer < ApplicationMailer

  def contact_us(pending_message)
    @message = pending_message

    mail to: "joemarion.io@gmail.com",
        subject: "New message from JoeMarion.io!"
  end
end

我现在已经关注了几个教程,我一直在遇到这个问题。我已经看到其他几个人有这个错误,但他们是由于不正确的设置(大多数他们在初始化器中设置他们的smtp,但当他们将其移回开发它工作)。

我可以通过命令行建立与Gmail服务器的连接。

此时我开始对我需要改变以解决这个问题感到困惑。任何建议将不胜感激。

编辑: 跑完后:

telnet smtp.gmail.com 587

Trying 64.233.180.109...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP u68sm13502513oia.22 - gsmtp

telnet smtp.gmail.com 587

Trying 64.233.180.109

在超时之前。

2 个答案:

答案 0 :(得分:0)

在development.rb中添加:

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

之后,尝试将端口587更改为25,然后运行:

telnet smtp.gmail.com 587

并查看消息,如果不起作用,请更改

telnet smtp.gmail.com 25

还有一个细节,正在开发中:

config.action_mailer.smtp_settings = {
   ...
   domain: "localhost"
}

关于生产是可以使用域:“joemarion.io”,开发我预先使用localhost。

答案 1 :(得分:0)

您可以尝试降低Google帐户的安全级别,以查看拒绝连接是否来自谷歌方面。以下链接应提供更多信息:

https://support.google.com/accounts/answer/6010255?hl=en

我自己在rails中没有遇到过这个问题,我在使用javamail时遇到过这个问题,但值得一试。