web-dev-qa-db-ja.com

RubyメーラーがEOFErrorを考え出している

コントローラのこのコードで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 protected]'
    from       'webmaster'
    body        mail
  end
end

さてここに私が得るエラーがあります


PedalsController#contactのEOFError

ファイルの終わりに達しました


これがアプリケーショントレースです


/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'

たぶん私は本当に愚かな何かを見逃しているかもしれませんが、誰かがこれに答えることができれば、それは素晴らしいでしょう。また、私の修正は何ですか?

31
Deadder

了解しました。ありがとうございます。実際、UserMailerに不正なコードがありました。 from行にある実際のコードには、電子メールアドレスを囲む<>があり、送信者の名前が外側にありました。それは私が使用/作業しているいくつかのプライベートメールサーバーでは機能しましたが、Hostmonsterでは機能しません。将来的にHostmonsterを使用することになった人のために、メーラー構成に関するすべてを単純にしてください(メッセージは複雑になる可能性がありますが、SMTP構成は単純である必要があります)。ありがとう。

3
Deadder

これは、SMTPサーバーがダウンしている場合にも発生する可能性があります。 (私はSendgridと呼ばれるサードパーティのメーラーを使用していますが、これは完全にダウンしたときに一度発生しました)

15
lulalala

「ZOHO」を使ってメールを送信している場合は、

私がこれに問題を抱えた理由の1つはでした。

  1. 有効なfrom値を使用する必要があります。私の場合、存在しないメールアカウントを使用しましたdefault from: "[email protected]"したがって、zohoサーバーは電子メールの送信を許可していないため、EOFエラーが発生します。
  2. ZOHOでIMAP設定を許可する必要があります IMAP SETTING FOR ZOHO
9

メールサーバーに対して認証する必要がありますか?

:authentication =>:plain(もしそうなら)、: enable_starttls_auto => true

1
Jason Hobbs

SMTPに問題があります。

メーラーはSMTPで接続し、ソケットを正しく閉じることができません。

0
shingara