2013-05-29 7 views
18

を保存します。Railsの例外EOFError(到達したファイルの末尾)ユーザー(私は工夫の宝石を使用しています)を作成しようとしたとき、私は生産でこのエラーを取得してい工夫ユーザ

EOFError (end of file reached): 

私は前にこの問題をヒットし、それがZohoのメールを使用して、私のSMTP設定によるものでした。

私は以下の私の設定が問題を修正するものであると信じて:

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を追加しましたし、私はこのエラーが今発生する原因となっているものであると信じています。

誰もがこのエラーまたはSSLでのZohoメールのSMTP設定に任意の洞察力を持っていますか?

答えて

35

このエラーはconfig.mailer_senderのための正しいメールアドレスを指定して、私のconfig /初期化子/ devise.rbを持っていないことで引き起こされました。

+0

あなたは2hから、なぜこの例外が発生しているのかについて何らかの解決策を探しています。どうもありがとう!これは私のconfがGmailのsmtpサーバーを使用して動作していたため、私のドメインに関連するものではないので、今まで見たことのない最も奇妙なものの1つです。 – Raindal

+0

時間を忘れてうれしいです。私はかなり時間をかけてこのことを理解しました。 – Catfish

+0

どうやってそれを理解しましたか? –

3

また、私はこの追加の間違いを犯し、同じ問題を抱えていました。私は、 "ドメイン"変数にメールサーバードメインの代わりに自分のドメインを使用しました。

あなたの環境変数は次のようになります。上記の

GMAIL_DOMAIN=gmail.com

または、例えば:

:domain => 'gmail.com',

1

ここで働いてpony宝石コールがあります。

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

私は=>https://stackoverflow.com/a/40354121/6264112

ここでエラーのための1つの原因を発見した。しかし、これは私の問題を解決していませんでした。私はすべてのエラーを取得していなかったが、私の電子メールはまだZohoサービスを通じて働いていなかったので、私は私のニーズに完璧に動作し、別の解決策は...

1)SMTPを使用してGmailにZohoのを接続しました。 zohoの電子メールはgmailに転送されるので、Zohoの電子メールアドレスからGmailに返信できます。これは、zohoにログインする必要がないようにとにかく実行する必要があります。 Gmailからすべてのメールを送信してください。

2)接続actionmailerのGmailアカウントへの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 
} 

は今、私はちょうどそのようなメーラーの値にしてから指定する必要があります。

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 

私は誰かが送信したときに、上記の例ですと自分自身に電子メールを送信したい場合は、この作品連絡フォーム。

私は、そのような彼らがリード磁石を記入するときのように自分のドメインからのメールを送信したい場合にも動作します。私がしたのは、to:とfrom:アドレスを切り替えることだけでした。

+0

これが最後の手段です。私はENV変数を取り除きました。 –

+0

最後の努力は間違いなく...しかしENV変数はなぜ問題を引き起こしますか?パブリックリポジトリにパスワードを保存したくない場合はどうすればよいですか? –

+0

このエラーは、外部のgmailホストを 'smtp-relay.gmail.com'に設定した場合にも発生します。' smtp.gmail.com'に設定すると、(2017年)正常に動作するようです。 – jevon

関連する問題