0

Rails 3 でアプリケーションを作成し、SMTP サーバー経由でメールを送信するための簡単な連絡先ページを作成しました。問題は、アプリをローカル ホスト (PC) で実行するとメールを送信できることですが、ホストされたサーバー (hostgator) でアプリを実行すると機能しません。おもしろいことに、smtp サーバーは同じです。

これは私のローカルホストの構成です(そしてそれは動作します!):

構成/環境/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"

config/initializers/setup_mail.rb

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

私のホスト サーバーの URL は app.mydomain.org であるため、ホストされたアプリではこれだけを変更しました。

config/environments/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'
...

私は何かが欠けていますか??

編集して解決:

Hostgator のサポート スタッフは、この問題の原因を突き止めました。ActionMailerセットアップでは、は:addressである必要がありlocalhost、 ではありませんmail.mydomain.org。したがって、ActionMailer は次のようになります。

ActionMailer::Base.smtp_settings = {  
  :address              => "localhost",  
  :port                 => 26,  
  :domain               => "app.mydomain.org",  
  :user_name            => "register@app.mydomain.org",  
  :password             => "********",  
  :authentication       => "plain",  
  :enable_starttls_auto => false  
} 
4

1 に答える 1

0

developer.rb ではなく、development.rb のことだと思います。この設定は開発でのみ実行され、サーバーで RAILS_ENV を production として設定したと仮定すると、development.rb ではなく production.rb が処理されます。

サーバーが両方で同じである場合、これを application.rb (または config/initializers のスクリプト) に移動できます。ただし、ローカルホストを指すように、本番用に別のセットアップが必要になる場合があります。DNS の問題やサーバーの構成によって送信 SMTP 要求が妨げられている場合は、ここでも問題が解決する可能性があります。

于 2012-04-04T22:43:25.433 に答える