SMTP连接超时

时间:2016-08-21 17:48:18

标签: ruby-on-rails smtp gmail actionmailer telnet

我正在试图通过Rails的ActionMailer发送电子邮件来调试“执行过期”错误,并且没有运气。我不认为这是一个Rails问题,因为从终端执行telnet smtp.gmail.com 587时连接也会超时。

执行telnet命令时的输出是:

Trying 2607:f8b0:400d:c07::6c...
telnet: connect to address 2607:f8b0:400d:c07::6c: Operation timed out
Trying 74.125.192.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP z32sm7598799qtz.0 - gsmtp

我的设置在config / development.rb中,如下所示:

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

config.action_mailer.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 587,
    :domain               => "gmail.com",
    :user_name            => ENV['GMAIL_USERNAME'],
    :password             => ENV['GMAIL_PASSWORD'],
    :authentication       => "plain",
    :enable_starttls_auto => true
}

堆栈跟踪如下:

Completed 500 Internal Server Error in 30095ms (ActiveRecord: 1.0ms)

Net::OpenTimeout - execution expired:
  /Users/yawn/.rbenv/versions/2.1.2/lib/ruby/2.1.0/timeout.rb:114:in `timeout'
  /Users/yawn/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:550:in `do_start'
  /Users/yawn/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:520:in `start'
  mail (2.6.4) lib/mail/network/delivery_methods/smtp.rb:113:in `deliver!'
  mail (2.6.4) lib/mail/message.rb:2149:in `do_delivery'
  mail (2.6.4) lib/mail/message.rb:237:in `block in deliver'
    ...
  /Users/yawn/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

我还尝试在Gmail中启用“允许访问安全性较低的应用”,并尝试使用我的个人Gmail地址以及自定义域Google Apps域。我最初只使用自定义域名Google Apps地址进行了尝试,并认为Namecheap可能会阻止SMTP连接,就像我读过Digital Ocean所做的那样,但是一个简单的@gmail地址持续存在的问题似乎排除了这一点。 / p>

当我走这条路时,我也尝试添加:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

/etc/sysctl.conf,但无济于事。

我现在的想法是,可能只是我的ISP阻止了SMTP连接,如果我要将其部署到生产中,那么它可能会起作用吗?但我真的不知道。

提前致谢。

0 个答案:

没有答案