Rails 3.0发送电子邮件错误:Errno :: ECONNRESET(连接由同行重置)

时间:2011-09-04 18:06:16

标签: ruby-on-rails ruby

我正在尝试编写一种方法向我网站上的所有成员发送电子邮件。一切似乎进展顺利,我得到一条消息说出错了。我检查了我的生产文件,并收到以下消息:

 Errno::ECONNRESET (Connection reset by peer)

应用程序在遇到此错误之前能够发送大约15封电子邮件。

不确定是否有帮助,但这是我的控制器代码:

 def sendLatestEmail
accounts = Account.all
latestFive = Opinion.find(
    :all,
    :order => "created_at DESC",
    :limit => 5
)
accounts.each do |a|
    if a.allow_email_notification
        AdminMailer.latest_email(a, latestFive).deliver
    end
end
flash[:message] = "Latest Emails Delivered"
redirect_to(admin_panel_path)
end

在我的production.rb文件中,我有以下内容:

 config.action_mailer.raise_delivery_errors = true
 config.action_mailer.perform_deliveries = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
   :address              => "smtpout.secureserver.net",
   :port                 => 80,
   :domain               => 'somesite.com',
   :user_name            => 'no-reply@somesite.com',
   :password             => 'password',
   :authentication       => 'login',
   :enable_starttls_auto => false 
}

关于问题可能是什么的任何想法?

我有一个与godaddy建立的电子邮件帐户,所以我不确定您可以发送的电子邮件数量是否有某种限制?

我一直在寻找简单的工作者,但我想确保如果我能自己解决这个问题,就不会浪费我的钱。

谢谢,

布赖恩

3 个答案:

答案 0 :(得分:0)

SMTP出站的端口80有点奇怪(25是典型端口),但如果它成功传递邮件...似乎是服务器问题 - 看不到任何代码问题。

FWIW,我已经停止尝试使用SMTP,现在使用http://postmarkapp.com/。他们的价格非常具有竞争力,并且它使用他们的gem进入两行配置(不改变你的实际代码),从而落入ActionMailer。没有附属,只是传递它,因为我已经花了我的生命力量试图获得各种SMTP服务来玩球。

答案 1 :(得分:0)

长消息发送作业肯定应该在后台作业中完成,但是您也可以使用Kernel.fork来分叉该代码,并使用一段代码继续运行,尽管它有时会导致一些奇怪的东西。 / p>

要检查的一些事项:

是的,用于smtp的端口80听起来有点奇怪,是否有任何电子邮件最终被送到了?

如果您在rails控制台中运行代码,它是否正常工作?

答案 2 :(得分:0)

我使用mongrel更新了服务器,并且工作正常.webrick有时无法解码长消息发送作业。