我使用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
}
也許Hostgator阻止SMTP端口? – 2012-04-04 21:57:17
如果是這樣,當我在我的電腦上運行應用程序時,它不會工作,不是嗎? – 2012-04-04 22:40:21
只是想着大聲:) – 2012-04-04 22:42:02