I am working on a Ruby (1.8.6) on Rails (2.3.5) application in which I am currently using Gmail to deliver email messages. I want to switch to sending the messages with Delayed Jobs.
I have delayed jobs sending messages on my development environment but when I deploy to my production server and try the messages get rejected and an error shows up in my delayed_jobs table: 530 5.7.0 Must issue a STARTTLS command first. i25sm12946175anh.17.
I've seen this error before (when I don't开发者_JAVA技巧 have TLS enabled in my config). But it was working before I started using delayed_jobs. Here is my mail config:
ActionMailer::Base.smtp_settings = {
:enable_starttls_auto => true,
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'example.com',
:authentication => :plain,
:user_name => 'user@example.com',
:password => 'password'
}
Any help with this issue is greatly appreciated.
Update: The application is actually running on REE ruby 1.8.7. So maybe delayed jobs is somehow using the regular ruby interpreter installed on the server (1.8.6). But, how do I get delayed jobs to use my REE install? And how do I tell what things are using what version of Ruby.
But, how do I get delayed jobs to use my REE install? And how do I tell what things are using what version of Ruby.
The script/delayed_job
command uses the system Ruby. So "which ruby
" should point to the REE installation. If not, you can force it by using the Ruby executable. Lets say, your REE is installed at /opt/ruby-enterprise-1.8.7-2010.01
. Then:
$ RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/ruby script/delayed_job -n 2 start
Or if you use the rake command to start, like:
$ rake jobs:work -t RAILS_ENV=production
Then which rake
should point to your REE installation. If its not, then you can make it use REE by:
RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/rake jobs:work -t
Normally you would use :enable_starttls_auto
as you wrote, but that only works for ruby >= 1.8.7 and ruby >= 1.9.
So you need to use the solution as stated here: define a file smtp_tls.rb
which you place in your initializers folder.
精彩评论