Ruby Mailer предлагает EOFError - PullRequest
30 голосов
/ 14 июня 2010

Я получаю 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

Хорошо, вот ошибка, которую я получаю


EOFError в PedalsController # 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 ]

15 голосов
/ 11 апреля 2013

Это также может произойти, если SMTP-сервер не работает. (Я использую стороннюю почтовую программу под названием Sendgrid, и это случилось однажды, когда она полностью отключилась)

9 голосов
/ 01 ноября 2016

Если вы используете «ZOHO» для отправки электронной почты,

одна из причин, по которой у меня возникла проблема, была.

  1. Вы должны использовать действительное значение from. В моем случае я использовал несуществующую учетную запись электронной почты default from: "info@luxelectrical.net.au" следовательно, сервер zoho не разрешает отправлять электронную почту, что приводит к ошибке EOF.
  2. Вы должны разрешить настройки IMAP на ZOHO IMAP SETTING FOR ZOHO
3 голосов
/ 24 июня 2010

Хорошо, спасибо, ребята, у меня действительно был неправильный код в UserMailer.Фактический код, который я имел в строке from, содержал адрес электронной почты <>, а имя отправителя находилось снаружи.Хотя это сработало на некоторых частных почтовых серверах, на которых я работал / работал, он не работает на Hostmonster .Таким образом, для любого, кто в конечном итоге использует Hostmonster в будущем, сохраняйте все в своей конфигурации почтовых программ простым (сообщение может быть сложным, но настройка SMTP должна быть простой).Спасибо.

1 голос
/ 23 июня 2010

Требуется ли аутентификация на почтовом сервере?

: аутентификация =>: обычная (если есть),: enable_starttls_auto => true

0 голосов
/ 16 июня 2010

Это проблема с вашим SMTP.

Почтовик соединяется с ним по SMTP и не может корректно закрыть сокет.

...