2010-06-14 2 views
29

Я получаю EOFError (End Of File Error) этого кода в контроллере. Блок, где появляется ошибка, находится в конце строки, которая говорит UserMailer.deliver_message(. Я не знаю, как это исправить, я застрял около 2 месяцев, и этот сайт был предложен. Пожалуйста помоги.Ruby mailer подходит с EOFError

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 

Хорошо здесь ошибка я получаю


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' 

Может быть, я что-то действительно глупое не хватает, но если кто-то может ответить на этот вопрос, что было бы потрясающе. Кроме того, каково мое решение?

+1

Пожалуйста, измените вопрос, чтобы включить код из вашей модели 'Message' и ваш' UserMailer'. –

+1

Кажется, что у почтовой программы возникли проблемы с доставкой по электронной почте. Можете ли вы опубликовать полную ошибку, включая трассировку стека и конфигурацию электронной почты? – molf

ответ

3

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

+0

Привет, не могли бы вы пояснить, что вы подразумеваете под «простым»? – jaycode

+0

Эй @jaycode от «простого» Я имею в виду, сохраняйте конфигурацию SMTP в виде обычного текста, не добавляйте дополнительный код или параметры. – Deadder

0

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

Почтовый ящик подключается к SMTP к нему и не может закрыть корневой разъем.

+0

Можете ли вы это уточнить? – Deadder

+0

зависит от вашей конфигурации. Для этого используется sendmail или SMTP-соединение? – shingara

+0

SMTP используется, я пробовал другие способы отправки, и он не работает. – Deadder

1

Вам нужно пройти аутентификацию на почтовый сервер?

: Аутентификация =>: обычная (если это так), : enable_starttls_auto => верно

15

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

+1

То же точное положение дел для нас. Удалили бы мои волосы. – Michael

+0

Указание неправильного порта также приведет к тому, что это произойдет. –

9

Если вы используете «Zoho», чтобы отправить электронную почту,

одна из причин, я имел проблемы с этим было.

  1. Вы должны использовать действительное значение from. В моем случае я использовал не существующую учетную запись электронной почты default from: "[email protected]" поэтому сервер zoho не позволяет отправлять электронное письмо, которое вызывает EOF Error.
  2. Вы должны позволить настройки IMAP на Zoho IMAP SETTING FOR ZOHO
+0

Более конкретно для «действительного значения» - это должен быть адрес из учетной записи, подключенной к пользователю/пропуску, который вы используете для отправки через Зохо. Другой адрес Zoho, даже используя тот же домен, у которого разные логин-учетные данные, вы все равно получаете сумасшедшую ошибку EOF (что не имеет смысла). – JosephK

Смежные вопросы