2012-04-04 160 views
0

我使用Rails 3構建了一個應用程序,並且我通過簡單的聯繫人頁面來通過SMTP服務器發送郵件。 問題是我的應用程序可以在我的本地主機(我的電腦)中運行它時發送郵件,但在託管服務器(hostgator)中運行應用程序時它不起作用。 有趣的是,smtp服務器是一樣的!ActionMailer在本地主機上工作,但不在公共服務器上

這是在我的本地主機的配置(和它的作品!):

配置/環境/ 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 
} 

我的主機服務器的網址是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?

編輯&解決:

HostGator的支持人員剛剛發現這個問題的原因。 在ActionMailer設置中,:address必須是localhost,而不是mail.mydomain.org。所以ActionMailer會是:

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

也許Hostgator阻止SMTP端口? – 2012-04-04 21:57:17

+0

如果是這樣,當我在我的電腦上運行應用程序時,它不會工作,不是嗎? – 2012-04-04 22:40:21

+0

只是想着大聲:) – 2012-04-04 22:42:02

回答

0

我認爲你的意思是development.rb,而不是developer.rb。此設置僅在開發中運行,並假設您已將RAILS_ENV設置爲服務器上的生產,它將是production.rb,而不是development.rb,將被處理。

如果兩個服務器都是相同的,那麼可以將其移至application.rb(或config/initializers中的腳本)。您可能需要爲生產設置不同的設置,以便它指向本地主機。這也可能解決這個問題,如果有一些DNS問題或服務器配置阻止傳出的SMTP請求。

+0

是的,我的意思是development.rb :)和在託管的服務器我沒有設置RAILS_ENV,因爲我只是運行應用程序的展示。 服務器在兩臺主機上都是一樣的,並且會持續幾個月。 – 2012-04-04 23:25:43

相關問題