我正在开发一个关于Rails(2.3.5)应用程序的Ruby(1.8.6),我目前正在使用Gmail来发送电子邮件。我想切换到发送延迟作业的消息。
我延迟了在我的开发环境中发送消息的作业,但是当我部署到我的生产服务器并尝试消息被拒绝时,我的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 => 'user@example.com',
:password => 'password'
}
非常感谢您对此问题的任何帮助。
更新:应用程序实际上在REE ruby 1.8.7上运行。因此,延迟作业可能会以某种方式使用服务器上安装的常规ruby解释器(1.8.6)。但是,如何使用我的REE安装延迟作业?我怎么知道什么东西在使用什么版本的Ruby。
答案 0 :(得分:0)
通常你会在编写时使用:enable_starttls_auto
,但这只适用于ruby> = 1.8.7和ruby> = 1.9。
因此,您需要按照规定here使用解决方案:定义放置在初始化文件夹文件夹中的文件smtp_tls.rb
。
答案 1 :(得分:0)
但是,如何使用延迟作业 我的REE安装?我该怎么说呢 事情正在使用什么版本的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