Errno::ECONNREFUSED: 连接被拒绝 - connect(2) for action mailer [英] Errno::ECONNREFUSED: Connection refused - connect(2) for action mailer

查看:36
本文介绍了Errno::ECONNREFUSED: 连接被拒绝 - connect(2) for action mailer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很长时间以来一直在使用 Rails.现在我在 ActionMailer 中遇到了一个小问题.我想在用户注册时发送电子邮件以确认他的注册.我可以在开发模式下发送电子邮件,但在生产模式下不能发送电子邮件.
异常 Errno::ECONNREFUSED: Connection denied - connect(2) 每次调用 deliver 方法时都会出现.
我编写了以下代码.
我的 SMTP 配置看起来:
config.action_mailer.default_url_options = { :host => "localhost:3000" }

I have been working with rails since a long. Now I am facing a small issue in the ActionMailer. I want to send an email when user gets registered to confirm his registration. I am able to send email in the development mode but where as not in the production mode.
the exception Errno::ECONNREFUSED: Connection refused - connect(2) is coming everytime when deliver method is called.
I have written the following code.
My SMTP config looks:
config.action_mailer.default_url_options = { :host => "localhost:3000" }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.smtp_settings = {   
    :openssl_verify_mode => OpenSSL::SSL::VERIFY_NONE,      
    :ssl => true,
    :enable_starttls_auto => true,  #this is the important stuff!
    :address        => 'smtp.xxxx.xxx',
    :port           => xxx,
    :domain         => 'xxxxxx',
    :authentication => :plain,
    :user_name      => 'xxxxxxx@xxx.xxx',
    :password       => 'xxxxxxxxx'
  }

在控制器中,我写了以下内容:

In the controller, I have written the following:

def confirm_registration_in_c       
 @user = User.find_by_email(asdf123@gmail.com)
 if @user
      UserMailer.confirm_registration(@user).deliver            
 end
end

在我的 user_mailer.rb 中:

In my user_mailer.rb :

class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  def confirm_registration(user)
   @user = user
   @user_name = @user.name       
   email = @user.email 
   mail(:to => email, :subject => "Reset your password")
  end
end

我可以在本地主机中以开发模式发送电子邮件,但无法在专用服务器中发送电子邮件.
有人可以帮我吗?

I am able to send email in the development mode in my local host, but I am not able to send the email in the dedicated server.
Can anybody help me please?

推荐答案

在我的情况下,当我尝试通过发送电子邮件的 Rails 应用程序教程时遇到了类似的问题,Heroku 日志一直告诉我

In my situation, I encountered similar problems when I was trying to making through a sending-email Rails app tutorial, the Heroku logs kept telling my that

......

Errno::ECONNREFUSED(连接被拒绝 - 本地主机"端口 25 的连接(2)):

......

在将我的代码与作者的代码进行比较后,我发现我没有在 config/environments/production.rb 文件中设置我的 ActionMailer 配置.

After I compared my code with author's code, I got to find out that I had not setup my ActionMailer configurations in the config/environments/production.rb file.

然后我意识到我只是为发送电子邮件配置了我的 config/environments/development.rb,但我还没有为我的 config/environments/production 配置.rb.

Then I came to realized that I just had my config/environments/development.rb configured for sending-email, but I had not done it for my config/environments/production.rb.

因此,当您的应用在开发和生产之间的行为不同时,您可以检查它.

So you may check it when your app's behavior difers between development and production.

这篇关于Errno::ECONNREFUSED: 连接被拒绝 - connect(2) for action mailer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆