2010-08-30 45 views
0

我正在使用Rails(2.3.5)應用程序中的Ruby(1.8.6)應用程序,其中我正在使用Gmail來傳遞電子郵件。我想切換到使用延遲作業發送消息。爲什麼延遲作業不能用於我的ActionMailer生產設置?

我在我的開發環境中發送了延遲的作業,但是當我部署到我的生產服務器並嘗試郵件被拒絕並且在我的delayed_jobs表中顯示錯誤時:530 5.7.0 Must issue a STARTTLS command first. i25sm12946175anh.17.我以前見過此錯誤(當我在我的配置中沒有啓用TLS)。但是在我開始使用delayed_jobs之前它正在工作。這是我的郵件配置:

ActionMailer::Base.smtp_settings = { 
    :enable_starttls_auto => true, 
    :address => 'smtp.gmail.com', 
    :port => 587, 
    :domain => 'example.com', 
    :authentication => :plain, 
    :user_name => '[email protected]', 
    :password => 'password' 
} 

任何有關這個問題的幫助是非常感謝。

更新:該應用程序實際上運行在稀土紅寶石1.8.7。所以也許延遲工作是使用服務器上安裝的常規ruby解釋器(1.8.6)。但是,如何獲得延遲工作來使用我的REE安裝?我怎麼知道什麼是使用什麼版本的Ruby。

+0

您是否運行delayed_job工作? – 2010-08-30 23:04:25

+0

是的,我是。它試圖發送它們,它們被gmail拒絕。 – Sam 2010-08-30 23:53:58

+0

我將Ruby EE設置爲我的默認設置,並且發送的電子郵件沒有錯誤。但現在我得到重複。 :( – Sam 2010-08-30 23:55:15

回答

0

但是,我如何獲得延期工作使用 我的稀土安裝?我怎麼知道什麼 事情正在使用什麼版本的Ruby。

script/delayed_job命令使用系統Ruby。所以「which ruby」應該指向REE安裝。如果不是,可以使用Ruby可執行文件強制執行。假設您的REE安裝在/opt/ruby-enterprise-1.8.7-2010.01。然後:

$ RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/ruby script/delayed_job -n 2 start 

或者,如果您使用rake命令來啓動,如:

$ rake jobs:work -t RAILS_ENV=production 

然後which rake應該指向你的REE安裝。如果沒有,那麼你可以通過以下方式使它使用REE:

RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/rake jobs:work -t 
0

通常情況下,您會使用:enable_starttls_auto,因爲它只適用於ruby> = 1.8.7和ruby> = 1.9。

所以你需要使用解決方案here:定義一個文件smtp_tls.rb你放置在你的初始化文件夾。

+0

是啊,那就是我的想法,我只是不明白爲什麼它會起作用,如果我不使用延遲工作來發送它。 – Sam 2010-08-30 21:19:53

相關問題