我正在试图通过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连接,如果我要将其部署到生产中,那么它可能会起作用吗?但我真的不知道。
提前致谢。