2010-06-14 16 views
29

Je reçois un EOFError (erreur de fin de fichier) sur ce code dans mon contrôleur. Le bloc où l'erreur apparaît est à la fin de la ligne qui dit UserMailer.deliver_message( Je ne suis pas au courant de la façon de résoudre ce problème, j'ai été bloqué pendant environ 2 mois et ce site a été suggéré. S'il vous plaît aider.Ruby mailer est à venir avec un 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 

Voici le fichier de message:

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

    Message: <%= @message.body %> 

    From: <%= @message.email %> 

Et voici le UserMailer

class UserMailer < ActionMailer::Base 

    def message(mail) 
    subject 'Feedback/Questions' 
    recipients '[email protected]' 
    from  'webmaster' 
    body  mail 
    end 
end 

Bon est l'erreur ici, je reçois


EOFError dans PedalsController # contactez

fin du fichier atteint


et voici la trace d'application


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

Peut-être que je manque quelque chose de vraiment stupide, mais si quelqu'un peut répondre à cela, que Ce serait incroyable. Aussi, quelle est ma solution?

+1

S'il vous plaît modifier votre question d'inclure le code de votre modèle '' message' et votre UserMailer'. –

+1

On dirait que l'expéditeur a des problèmes avec la livraison de votre courrier électronique. Pouvez-vous publier l'erreur complète, y compris la trace de la pile et la configuration de votre messagerie? – molf

Répondre

3

D'accord, merci les gars, j'ai eu le code malformé dans le UserMailer. Le code réel que j'avais dans la ligne de départ avait un <> encapsulant une adresse e-mail et avait le nom des expéditeurs à l'extérieur. Bien que cela ait fonctionné sur certains des serveurs de messagerie privés sur lesquels j'ai travaillé/travaillé, cela ne fonctionne pas sur Hostmonster. Soo, pour tous ceux qui finissent par utiliser Hostmonster dans le futur, gardez tout sur la configuration de votre mailers simple (le message peut être compliqué mais la configuration de SMTP doit être simple). Merci.

+0

Bonjour, pourriez-vous clarifier ce que vous voulez dire par "simple"? – jaycode

+0

Hey @jaycode par "simple" Je veux dire, gardez la configuration SMTP en texte brut, n'ajoutez pas de code ou de paramètres supplémentaires. – Deadder

0

C'est un problème avec votre SMTP.

Le mailer se connecte par SMTP à lui et ne peut pas fermer correctement le socket.

+0

Pouvez-vous clarifier cela? – Deadder

+0

cela dépend de votre configuration. Vous utilisez sendmail ou une connexion SMTP pour cela? – shingara

+0

SMTP est utilisé, j'ai essayé d'autres moyens d'envoi et cela ne fonctionne pas. – Deadder

1

Vous devez vous authentifier auprès du serveur de messagerie?

: authentification =>: simple (le cas échéant), : enable_starttls_auto => true

15

Cela peut également se produire si le serveur SMTP est arrêté. (J'utilise un logiciel de messagerie 3e appelé SendGrid et cela est arrivé une fois quand il descend tout)

+1

Même situation exacte pour nous. J'aurais arraché mes cheveux – Michael

+0

Spécifier le mauvais port se traduira également par ce qui se passe –

9

Si vous utilisez « Zoho » pour envoyer un email,

une des raisons pour lesquelles j'avais un problème avec c'était.

  1. Vous devez utiliser une valeur valide from. Dans mon cas, j'ai utilisé un compte e-mail non existant default from: "[email protected]" donc le serveur zoho ne permet pas d'envoyer l'e-mail qui cause l'erreur EOF.
  2. vous devez autoriser les paramètres IMAP sur Zoho IMAP SETTING FOR ZOHO
+0

Plus spécifique à "valide de la valeur" - il doit être une adresse de provenance du compte connecté à l'utilisateur/passe que vous utilisez pour envoyer via Zoho. Une adresse Zoho différente, même en utilisant votre même domaine, qui a des identifiants de connexion différents, vous obtenez toujours l'erreur EOF fou (ce qui n'a aucun sens). – JosephK