Ruby邮件程序正在提出一个EOFError

时间:2010-06-14 16:15:57

标签: ruby-on-rails ruby smtp sendmail actionmailer

我在控制器中的此代码上收到EOFError(文件结束错误)。出现错误的块位于UserMailer.deliver_message(行的末尾。我不知道如何解决这个问题,我已经被困了大约2个月而且这个网站被建议了。请帮忙。

  def contact
      @title= "Contact Us"
      if request.post?
       @message= Message.new(params[:contact])
        if @message.valid?
           UserMailer.deliver_message(
            :message => @message
            )
          flash[:notice] = "Thank you for contacting us"
          redirect_to contact_url
         end
        end
      end

这是消息文件:

<%= @message.name %> has sent feedback or a question:

  Message: <%= @message.body %>

  From: <%= @message.email %>

这是UserMailer

class UserMailer < ActionMailer::Base

  def message(mail)
    subject    'Feedback/Questions'
    recipients 'Email@email'
    from       'webmaster'
    body        mail
  end
end

好的,这是我得到的错误


PedalsController中的EOFError #contact

文件结束


这是应用程序跟踪


/usr/lib64/ruby/1.8/net/protocol.rb:135:in `sysread'
/usr/lib64/ruby/1.8/net/protocol.rb:135:in `rbuf_fill'
/usr/lib64/ruby/1.8/timeout.rb:62:in `timeout'
/usr/lib64/ruby/1.8/timeout.rb:93:in `timeout'
/usr/lib64/ruby/1.8/net/protocol.rb:134:in `rbuf_fill'
/usr/lib64/ruby/1.8/net/protocol.rb:116:in `readuntil'
/usr/lib64/ruby/1.8/net/protocol.rb:126:in `readline'
/usr/lib64/ruby/1.8/net/smtp.rb:911:in `recv_response'
/usr/lib64/ruby/1.8/net/smtp.rb:897:in `getok'
/usr/lib64/ruby/1.8/net/smtp.rb:921:in `critical'
/usr/lib64/ruby/1.8/net/smtp.rb:895:in `getok'
/usr/lib64/ruby/1.8/net/smtp.rb:828:in `mailfrom'
/usr/lib64/ruby/1.8/net/smtp.rb:653:in `sendmail'
$HOME/blueflower/vendor/rails/actionmailer/lib/action_mailer/base.rb:684:in `perform_delivery_smtp'
/usr/lib64/ruby/1.8/net/smtp.rb:526:in `start'
$HOME/blueflower/vendor/rails/actionmailer/lib/action_mailer/base.rb:682:in `perform_delivery_smtp'
$HOME/blueflower/vendor/rails/actionmailer/lib/action_mailer/base.rb:523:in `__send__'
$HOME/blueflower/vendor/rails/actionmailer/lib/action_mailer/base.rb:523:in `deliver!'
$HOME/blueflower/vendor/rails/actionmailer/lib/action_mailer/base.rb:395:in `method_missing'
$HOME/blueflower/app/controllers/pedals_controller.rb:36:in `contact'

也许我错过了一些非常愚蠢的东西,但如果有人能够回答这个问题,那就太棒了。另外,我的修复是什么?

5 个答案:

答案 0 :(得分:15)

如果SMTP服务器关闭,也会发生这种情况。 (我使用名为Sendgrid的第三方邮件程序,当它完全关闭时发生了一次)

答案 1 :(得分:9)

如果您使用“ZOHO”发送电子邮件,

我遇到问题的原因之一是。

  1. 您应该使用有效的from值。就我而言,我使用了一个不存在的电子邮件帐户 default from: "info@luxelectrical.net.au" 因此,zoho服务器不允许发送导致EOF错误的电子邮件。
  2. 您应该在ZOHO上允许IMAP设置 IMAP SETTING FOR ZOHO

答案 2 :(得分:3)

好的,谢谢你们,我实际上在UserMailer中有错误的代码。我在from行中的实际代码有一个&lt;&gt;包含一个电子邮件地址,并在外面有发件人姓名。虽然这已经在我使用/工作的一些私人电子邮件服务器上有效,但它不适用于 Hostmonster 。 Soo,对于将来最终使用Hostmonster的任何人来说,保持邮件配置的一切都很简单(消息可能很复杂,但SMTP配置需要简单)。感谢。

答案 3 :(得分:1)

您是否需要对邮件服务器进行身份验证?

:authentication =&gt; :普通(如果是这样), :enable_starttls_auto =&gt;真

答案 4 :(得分:0)

这是您的SMTP问题。

邮件程序通过SMTP连接到他,无法正确关闭套接字。