2013-05-29 12 views
18

Otrzymuję ten błąd w produkcji podczas próby utworzenia użytkownika (używam gem devise).Rails EOFError (koniec pliku osiągnięto) podczas zapisywania użytkownika devisera

EOFError (end of file reached): 

Uderzyłem ten problem wcześniej i było to spowodowane moimi ustawieniami smtp za pomocą poczty zoho.

wierzę moja konfiguracja poniżej to co rozwiązaniu problemu:

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  
} 

Teraz dodaliśmy SSL do serwisu i wierzę, że to, co jest przyczyną tego błędu występuje teraz.

Czy ktoś ma wgląd w ten błąd lub ustawienia poczty zoho mail z SSL?

Odpowiedz

35

Ten błąd został spowodowany przez brak mojego config/initializers/devise.rb określającego poprawny adres e-mail dla config.mailer_sender.

+0

Właśnie wydostałeś mnie z 2 godzin, szukając jakiegoś rozwiązania, dlaczego ten wyjątek został podniesiony. Wielkie dzięki! Jest to jedna z najdziwniejszych rzeczy, jakie widziałem, ponieważ moja conf pracowała przy użyciu serwerów SMTP Gmaila, ale nie tych związanych z moją domeną. – Raindal

+0

Cieszę się, że oszczędzam czas.Samo to zajęło mi trochę czasu, aby wymyślić ten jeden. – Catfish

+0

jak to rozgryzłeś? –

3

Również! Zrobiłem ten dodatkowy błąd i miałem ten sam problem: użyłem własnej domeny zamiast domeny serwera poczty dla zmiennej "domain".

Twój zmienna powinna być:

GMAIL_DOMAIN=gmail.com

Albo dla powyższego przykładu:

:domain => 'gmail.com',

1

Oto działa wywołanie pony gem.

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

znalazłem jeden powód do błędu tutaj =>https://stackoverflow.com/a/40354121/6264112

Ale to nie rozwiązuje mojego problemu. Podczas gdy nie otrzymywałem żadnych błędów, moje e-maile wciąż nie działały przez Zoho, więc znalazłem inne rozwiązanie, które działa idealnie na moje potrzeby ...

1) Połącz Zoho z Gmailem za pomocą SMTP. Ustawiam pocztę zoho jako alias dla mojego osobistego konta Gmail, więc e-maile zoho są przekazywane do Gmaila i mogę na nie odpowiedzieć W Gmailu Z mojego adresu e-mailowego zoho. Należy to zrobić tak czy inaczej, aby nigdy nie musieć się logować do zoho. Po prostu wykonuj wszystkie wiadomości e-mail z Gmaila.

2) Połącz ActionMailer z kontem gmail NOT 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 
} 

Teraz wystarczy, aby określić do iz wartościami w program pocztowy tak:

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 

ta działa kiedy chce wysłać e-mail do siebie jak w powyższym przykładzie, gdy ktoś twierdzi, formularz kontaktowy.

Działa również, gdy chcę wysłać wiadomość e-mail z mojej domeny, na przykład podczas wypełniania magnesu głównego. Wszystko, co zrobiłem, to przełączenie na: i z: adresów.

+0

To jest ostatnia deska ratunku. Usunąłem zmienne ENV i zadziałałoby –

+0

Zdecydowanie ostatnia próba rowu ... Ale dlaczego zmienne ENV powodowałyby problemy? Co zrobić, jeśli nie chcesz przechowywać haseł w publicznym repozytorium? –

+0

Ten błąd może również wystąpić, jeśli ustawiłeś zewnętrzny host Gmaila na 'smtp-relay.gmail.com' - ustawienie go na" smtp.gmail.com "wydaje się działać poprawnie (w 2017 roku). – jevon