Sidekiq上的Net :: OpenTimeout(执行过期)异常

时间:2016-09-14 13:13:34

标签: ruby-on-rails email deployment telnet sidekiq

我正在使用sidekiq来排队我的Rails应用程序将发送的电子邮件。发送电子邮件在开发中工作,但在生产中,sidekiq将收到网络超时错误。发生了什么事?

这是production.rb

中的配置
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 578,
  domain:               ENV["PPRODUCTION_DOMAIN"],
  user_name:            ENV["GMAIL_USERNAME"],
  password:             ENV["GMAIL_PASSWORD"],
  authentication:       :plain,
  enable_starttls_auto: true
}

config.active_job.queue_adapter = :sidekiq

我尝试了以下内容:

  1. 禁用IPv6并将IPv4设置为首选
  2. 使用非标准端口(2525)代替587
  3. 尝试通过telnet smtp.gmail.com 587进行连接。我收到以下错误:telnet: Unable to connect to remote host: Network is unreachable。可能值得注意的是,我在代理服务器后面操作 - 在这种情况下是否应该有额外的设置?
  4. sudo ufw allow 587
  5. 我在Ubuntu 14.04服务器上并使用unicorn和nginx设置我的应用程序。

    我已经好几天了。 :(任何帮助将不胜感激!

    更新

    我也尝试了以下内容:

    1. 删除sidekiq以使用Rails的邮件程序发送电子邮件。相同的结果。
    2. 通过telnet smtp.gmail.com 465连接。这个可行,所以我尝试将生产中的端口设置为465,但我仍然得到相同的错误。
    3. 使用我们的生产域删除域名,然后使用localhost:3000。没有任何事情发生。

2 个答案:

答案 0 :(得分:0)

根据Rails guide's动作邮件基础知识,您提供的端口号不正确。因为它是587而不是578.

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'example.com',
  user_name:            '<username>',
  password:             '<password>',
  authentication:       'plain',
  enable_starttls_auto: true  }

我希望这会有所帮助!!

答案 1 :(得分:0)

以某种方式通过将端口更改为456来修复它。

我更改了端口,因为某些原因,telnet smtp.gmail.com 587不起作用,但telnet smtp.gmail.com 465起作用。 587可能已被网络阻止。

另外,我不确定以下更改是否也有帮助,但我还将身份验证更改为:login而不是:plain并添加了ssl: true。希望这可以帮助遇到同样问题的人。