我正在开发一个利用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'
有谁知道如何确定我的问题?
答案 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)
已知的Ruby bug: