2012-04-04 20 views
0

私はRails 3でアプリケーションを構築しました。私はSMTPサーバー経由でメールを送るための簡単な連絡先ページを作成しました。 問題は、私のローカルホスト(私のPC)でアプリケーションを実行するとメールを送信できますが、ホストされたサーバー(hostgator)でアプリケーションを実行すると動作しません。 面白いことに、smtpサーバーは同じです!ActionMailerはlocalhost上で動作しますが、公開サーバにはありません

これは私のローカルホストで設定(およびそれが動作!)です:

設定/環境/ developer.rb

# ActionMailer Config 
config.action_mailer.default_url_options = { :host => 'localhost:3000' } 
config.action_mailer.delivery_method = :smtp 
config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.default :charset => "utf-8" 

設定/初期化子/ setup_mail.rb

ActionMailer::Base.smtp_settings = { 
    :address    => "mail.mydomain.org", 
    :port     => 26, 
    :domain    => "app.mydomain.org", 
    :user_name   => "[email protected]", 
    :password    => "********", 
    :authentication  => "plain", 
    :enable_starttls_auto => false 
} 

私のホストサーバーのURLはapp.mydomain.orgなので、ホストされているアプリケーションではこれを変更しました:

設定/環境/ development.rbホストサーバで

# ActionMailer Config 
config.action_mailer.default_url_options = { :host => 'mydomain.org' } 
... 

は、ちょうど今の私は、開発モードでWEBrickにしてアプリを実行します。 そして、私はタイムアウトエラーを取得:

.... 
Timeout::Error (execution expired): 
    app/controllers/contact_us_controller.rb:13:in `create' 
... 

私はsomenthingをしないのです??

EDIT解決しよう&:

Hostgatorのサポートスタッフは、ちょうどこの問題の原因を見つけてきました。 ActionMailerの設定では、:addresslocalhostでなければならず、mail.mydomain.orgでなければなりません。したがって、ActionMailerは次のようになります。

+0

おそらくHostgatorがSMTPポートをブロックしていますか? –

+0

もしそうなら、私は自分のPCでアプリを実行するとうまくいかないでしょうか? –

+0

ちょっと考えました:) –

答えて

0

私はあなたがdeveloper.rbではなく、development.rbを意味すると思います。この設定は開発時にのみ実行され、サーバー上でRAILS_ENVをプロダクションとして設定していると仮定すると、development.rbではなくproduction.rbが処理されます。

サーバが両方で同じ場合は、これをapplication.rb(またはconfig/initializersのスクリプト)に移動できます。しかし、それはlocalhostを指しているように、プロダクション用に別の設定をしたいかもしれません。また、DNSの問題やサーバーの設定によって送信SMTPリクエストが妨げられている場合に、ここで問題を解決する可能性があります。

+0

はい、私はdevelopment.rb :)とホストされたサーバー私はRAILS_ENVを設定しませんでした。 サーバーは両方のホストで同じで、数ヶ月間はそうです。 –

関連する問題