Errno :: ECONNREFUSED - 拒绝连接 - 连接(2)for" localhost" 25号港口:

时间:2016-03-29 06:42:42

标签: ruby-on-rails-4 devise smtp devise-recoverable

我正在尝试使用设计在rails 4中使用动态电子邮件服务器设置重置密码。

my_mailer.rb

class MyMailer < Devise::Mailer
    helper :application
    include Devise::Controllers::UrlHelpers
    default template_path: 'devise/mailer' 

    def reset_password_instructions(record, token, opts={})
        # Has been dynamically set in the mailer_set_url_options of application_controller.rb
        # opts[:host] = Setup.email_url
        opts[:address] = Setup.email_address
        opts[:port] = Setup.email_port
        opts[:domain] = Setup.email_domain
        opts[:from] = Setup.email_username
        super
    end
end

但是得到同样的错误,什么可能是任何帮助的问题将真的有用谢谢:) enter image description here

2 个答案:

答案 0 :(得分:1)

首先根据截图

我认为您使用gmail作为提供商。

请转到环境文件(development.rbproduction.rb)。我猜你正在使用开发环境。

转到文件config/environments/development.rb

config.action_mailer.default_url_options = { :host => "my.website.com" }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
    address:              'smtp.gmail.com',
    port:                 587,
    domain:               'website.com',
    user_name:            'user@website.com',
    password:             'password',
    authentication:       'plain',
    enable_starttls_auto: true
}

请参阅ThisDoc

希望它可以帮到你

答案 1 :(得分:0)

我没有使用 Devise,但在尝试动态更改我的应用程序邮件程序的 smtp_settings 时遇到了同样的错误。 在我的情况下,设置来自数据库。 我让它工作的方式是使用 after_actionActionMailer 回调。并合并我的邮件投递方式的设置

这是一个例子:

after_action do
 self.delivery_method = SETTING_FROM_DB.delivery_method
 settings = {
   address: SETTING_FROM_DB.address,
   port: SETTING_FROM_DB.port
   # More setting if needed
   }
 self.mail.delivery_method.settings.merge! settings
end