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
在超时之前。
答案 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时遇到过这个问题,但值得一试。