Mandrill SMTP提供EOFError:文件结束时出现错误

时间:2016-01-29 15:26:38

标签: ruby-on-rails-4 heroku resque mandrill rails-activejob

我们使用Mandrill从我们的Rails应用程序(在Heroku上)发送交易电子邮件。

# config/environments/production.rb
config.action_mailer.delivery_method = :smtp  
config.action_mailer.smtp_settings = {
  :address   => "smtp.mandrillapp.com",
  :port      => 587,
  :enable_starttls_auto => true,
  :user_name => ENV['MANDRILL_USERNAME'],
  :password  => ENV['MANDRILL_PASSWORD'],
  :authentication => 'login',
  :domain => ENV['URL_OPTIONS_HOST'],
} 

当我们发送电子邮件时,我们将activeJob与deliver_later一起使用,在后台使用Resque发送电子邮件。

偶尔,也许每2-3天一次,我们会收到以下错误:

EOFError: end of file reached
File "/app/bin/rake" line 8 in <main>
....
"queue_name": "production_mailers", "job_class": "ActionMailer::DeliveryJob"

我认为这是由Mandrill的SMTP超时问题引起的。

有谁知道如何避免此错误?是否最好重试失败的电子邮件,如果是这样,如何使用ActiveJob和Resque实现这一目标?

1 个答案:

答案 0 :(得分:4)

我也看到了这个问题。每次发送都不会发生这种情况,我的大多数发送都来自resque作业。我想知道这是在mandrill方面的短暂问题还是网络问题。