コントローラのこのコードで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#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'
たぶん私は本当に愚かな何かを見逃しているかもしれませんが、誰かがこれに答えることができれば、それは素晴らしいでしょう。また、私の修正は何ですか?
了解しました。ありがとうございます。実際、UserMailerに不正なコードがありました。 from行にある実際のコードには、電子メールアドレスを囲む<>があり、送信者の名前が外側にありました。それは私が使用/作業しているいくつかのプライベートメールサーバーでは機能しましたが、Hostmonsterでは機能しません。将来的にHostmonsterを使用することになった人のために、メーラー構成に関するすべてを単純にしてください(メッセージは複雑になる可能性がありますが、SMTP構成は単純である必要があります)。ありがとう。
これは、SMTPサーバーがダウンしている場合にも発生する可能性があります。 (私はSendgridと呼ばれるサードパーティのメーラーを使用していますが、これは完全にダウンしたときに一度発生しました)
「ZOHO」を使ってメールを送信している場合は、
私がこれに問題を抱えた理由の1つはでした。
from
値を使用する必要があります。私の場合、存在しないメールアカウントを使用しましたdefault from: "[email protected]"
したがって、zohoサーバーは電子メールの送信を許可していないため、EOFエラーが発生します。メールサーバーに対して認証する必要がありますか?
:authentication =>:plain(もしそうなら)、: enable_starttls_auto => true
SMTPに問題があります。
メーラーはSMTPで接続し、ソケットを正しく閉じることができません。