2013-05-29 12 views
18

Durante l'operazione di creazione di un utente sto ricevendo questo errore (utilizzo la gemma di sviluppo).Rails EOFError (fine del file raggiunto) durante il salvataggio di un utente utente

EOFError (end of file reached): 

Ho riscontrato questo problema prima ed era dovuto alle mie impostazioni smtp che utilizzavano zoho mail.

Credo che la mia configurazione di seguito è quello che ha risolto il problema:

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = {    
    :address    => "smtp.zoho.com", 
    :port     => 465,    
    :domain    => 'example.com', 
    :user_name   => '[email protected]', 
    :password    => 'password',   
    :authentication  => :login, 
    :ssl     => true, 
    :tls     => true, 
    :enable_starttls_auto => true  
} 

SSL Ora abbiamo aggiunto al sito e credo che è quello che sta causando questo errore ora.

Qualcuno ha qualche informazione su questo errore o sulle impostazioni smtp di zoho mail con SSL?

risposta

35

Questo errore è stato causato dal mancato config/inizializzatori/devise.rb che specifica l'indirizzo email corretto per config.mailer_sender.

+0

Mi hai appena tirato fuori dalle 2h in cerca di una qualche soluzione sul motivo per cui questa eccezione è stata sollevata. Grazie molto! Questa è una delle cose più strane che abbia mai visto perché il mio conf stava lavorando usando i server smtp di gmail ma non quelli relativi al mio dominio. – Raindal

+0

Felice di risparmiarvi il tempo.Mi ci è voluto un po 'di tempo per capirlo. – Catfish

+0

come l'hai capito? –

3

Inoltre! Ho fatto questo errore aggiuntivo e ho avuto lo stesso problema: ho usato il mio dominio invece del dominio del server di posta per la variabile "dominio".

variabile di ambiente dovrebbe essere:

GMAIL_DOMAIN=gmail.com

O per l'esempio precedente:

:domain => 'gmail.com',

1

Ecco una chiamata pony gioiello di lavoro.

Pony.mail({ 
     :to => '[email protected]', 
     subject: "Pony ride", 
     body: "Awesome!", 
     from: "[email protected]", # this MUST be the sending Zoho email. 

     :via => :smtp, 
     :via_options => { 
     :address  => 'smtp.zoho.com', 
     :port   => '465', 
     :enable_starttls_auto => true, 
     ssl: true, 
     :user_name  => '[email protected]', # MUST be identical to :from. 
     :password  => 'yourStrongPw', 
     :authentication => :login, 
     } 
    }) 
1

ho trovato una causa per l'errore qui =>https://stackoverflow.com/a/40354121/6264112

Ma questo non ha risolto il mio problema. Mentre non ricevevo errori, le mie email non funzionavano ancora con Zoho, quindi ho trovato un'altra soluzione che funziona perfettamente per le mie esigenze ...

1) Connetti Zoho a gmail usando SMTP. Ho impostato il mio indirizzo email di Zoho come alias per il mio account personale Gmail, in modo tale che le email di zoho vengano inoltrate a gmail e posso rispondere a loro in gmail dal mio indirizzo email di zoho. Questo dovrebbe essere fatto comunque in modo da non dover accedere a zoho. Basta fare tutte le email da gmail.

2) Collegare ActionMailer all'account gmail NON zoho.

config.action_mailer.smtp_settings = { 
    :address       => 'smtp.gmail.com', 
    :port         => 587, 
    :user_name      => ENV["gmail_username"], 
    :password      => ENV["gmail_password"], 
    :authentication    => :plain, 
    :enable_starttls_auto  => true 
} 

Ora, ho solo bisogno di specificare la da e verso i valori nel programma di posta in questo modo:

def notify_admin (message_details) 
    @message_details = message_details 
    mail(to: "[email protected]", subject: "Contact form filled out by: " + message_details[:name], from: message_details[:email]) 
end 

Questo funziona quando voglio inviare email a me stesso come è l'esempio di cui sopra, quando qualcuno sottopone il modulo di contatto.

FUNZIONA ANCHE quando desidero inviare un'e-mail dal mio dominio, ad esempio quando riempie il magnete guida. Tutto ciò che ho fatto è stato passare a: e da: indirizzi.

+0

Questa è l'ultima risorsa. Ho rimosso le variabili ENV e funzionerebbe –

+0

Definitivamente l'ultimo tentativo di fuga ... Ma perché le variabili ENV causerebbero problemi? Cosa succede se non si desidera memorizzare le password in un repository pubblico? –

+0

Questo errore può verificarsi anche se hai impostato l'host gmail esterno a 'smtp-relay.gmail.com' - impostarlo su solo' smtp.gmail.com' sembra funzionare correttamente (nel 2017). – jevon