调试SMTP超时错误

时间:2009-07-30 10:44:50

标签: ruby-on-rails ruby email smtp

我正在开发一个利用Action Mailer发送邮件活动的Rails项目。目前我一直用普通的旧GMail帐户测试所有内容。现在接近发布,我决定将smtp服务器切换到我们的本地邮件服务器。

在我们尝试实际发送邮件之前,这一切都很好。使用这些新的smtp服务器设置,邮件程序除了超时之外什么都不做:

MY_SMTP_SETTINGS = {
  :address => 'oz.some.server.edu',
  :port => 465,
  :user_name => MY_USERNAME,
  :authentication => :login,
  :password => MY_PASSWORD
}

这是我尝试发送广告系列后收到的错误的堆栈跟踪:

    Timeout::Error: execution expired
    from /opt/local/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill'
    from /opt/local/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill'
    from /opt/local/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
    from /opt/local/lib/ruby/1.8/net/protocol.rb:126:in `readline'
    from /opt/local/lib/ruby/1.8/net/smtp.rb:911:in `recv_response'
    from /opt/local/lib/ruby/gems/1.8/gems/ambethia-smtp-tls-1.1.2/lib/smtp-tls.rb:19:in `do_start'
    from /opt/local/lib/ruby/1.8/net/smtp.rb:921:in `critical'
    from /opt/local/lib/ruby/gems/1.8/gems/ambethia-smtp-tls-1.1.2/lib/smtp-tls.rb:19:in `do_start'
    from /opt/local/lib/ruby/1.8/net/smtp.rb:525:in `start'
    from /opt/local/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/action_mailer/base.rb:681:in `perform_delivery_smtp'
    from /opt/local/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/action_mailer/base.rb:523:in `__send__'
    from /opt/local/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/action_mailer/base.rb:523:in `deliver!'
    from /opt/local/lib/ruby/gems/1.8/gems/actionmailer-2.3.2/lib/action_mailer/base.rb:395:in `method_missing'
    from /Users/ryan/Development/gsoc/cohort/repo/app/models/freemailer_campaign.rb:39:in `send_campaign'
    from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/associations/association_collection.rb:364:in `method_missing_without_paginate'
    from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/associations/association_proxy.rb:219:in `method_missing'
    from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/associations/association_proxy.rb:219:in `each'
    from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/associations/association_proxy.rb:219:in `send'
    from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/associations/association_proxy.rb:219:in `method_missing'
    from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/associations/association_collection.rb:364:in `method_missing_without_paginate'
    from /Users/ryan/Development/gsoc/cohort/repo/vendor/plugins/will_paginate/lib/will_paginate/finder.rb:167:in `method_missing'
    from /Users/ryan/Development/gsoc/cohort/repo/app/models/freemailer_campaign.rb:37:in `send_campaign'

有谁知道如何确定我的问题?

4 个答案:

答案 0 :(得分:2)

问题不在ruby中,而是在电子邮件服务器中。确保电子邮件服务器正常工作(testing email server through telnet console),然后重试。

答案 1 :(得分:0)

尝试telneting到SMTP框。

答案 2 :(得分:0)

在465端口上的邮件服务器上使用telnet,如果未打开,请检查防火墙和邮件服务器配置。此外,您可以尝试使用此动作管理器设置:

 :authentication => :plain (if so),
 :enable_starttls_auto => true

答案 3 :(得分:0)