Rails Delayed_job 不能发送邮件

hiveer · 2014年05月27日 · 最后由 hiveer 回复于 2014年05月28日 · 2286 次阅读

多的不说直接上代码

class UserMailer < Devise::Mailer  
  # customize mail format
  def user_feedback(opts={})
    @v = "Hello"
    @opts = opts
    mail(:to => "[email protected]", :bcc => ["[email protected]"],  :subject => "Test")
  end

  handle_asynchronously :user_feedback     
end

class MailsController < ApplicationController
  def feedback      
    options[:feedback_time] = Time.now.strftime("%Y%m%d %H:%M:%S")
    UserMailer.user_feedback(options).deliver
  end
end

启动 worker

rake jobs:workoff

log

[Worker(host:localhost.localdomain pid:2899)] Starting job worker
[Worker(host:localhost.localdomain pid:2899)] Job Delayed::PerformableMethod (id=18) RUNNING
[Worker(host:localhost.localdomain pid:2899)] No more jobs available. Exiting

不太懂了,顺便提一下 rails 版本是 4.0.4

redis 装了吗?推荐使用 sidekiq

rake jobs:work

bin/delayed_job start

UserMailer.delay.user_feedback(options)

#3 楼 @tuliang 你的建议应该是对的,log 也没有出问题,看起来是正常处理了的,但是邮件还是没有发送。 当我把

handle_asynchronously :user_feedback 

这句话去掉的时候,我能正常收到邮件!所以我觉得应该是这个方法导致的问题!

#1 楼 @raofeng 就是不想再去装一个 redis 所以我就放弃了 resque 和 sidekiq,因为我目前仅仅是发下邮件,没有更多性能需求,所以打算用 delayed_job

需要 登录 后方可回复, 如果你还没有账号请 注册新账号