繁体   English   中英

延迟在Rails中发送电子邮件?

[英]Delay email sending in Rails?

我正在使用delay_job延迟将信息从我的应用程序发送到FreeagentCentral(会计软件包)。 同时,它还使用PostmarkApp的gem发送两封电子邮件。

# POST /kases
# POST /kases.xml
def create
@company = Company.find(params[:kase][:company_id])
@kase = @company.kases.create!(params[:kase])

respond_to do |format|
UserMailer.delay.deliver_makeakase("email@address.com", "Highrise", @kase) if    params[:sendtohighrise]
UserMailer.delay.deliver_makeakaseteam("email2@address.com", "Highrise", @kase) if params[:notify_team_of_creation]
@kase.delay.create_freeagent_project(current_user) if params[:send_to_freeagent]

#flash[:notice] = 'Case was successfully created.'
flash[:notice] = fading_flash_message("Case was successfully created.", 5)

format.html { redirect_to(@kase) }
format.xml  { render :xml => @kase, :status => :created, :location => @kase }
end
end

上面的代码不会引发任何错误-但是不会发送电子邮件。 我想知道我做错了什么吗?

是这样的还是我错过了一些东西:

UserMailer.delay.deliver_makeakaseteam("email2@address.com", "Highrise", @kase) if params[:notify_team_of_creation]

谢谢,

丹尼

更新

--- 
- !ruby/object:Delayed::Backend::ActiveRecord::Job 
  attributes: 
    created_at: 2011-02-21 13:30:38
    locked_by: 
    failed_at: 
    updated_at: 2011-02-21 13:30:38
    handler: |
      --- !ruby/struct:Delayed::PerformableMethod 
      object: LOAD;UserMailer
      method: :deliver_makeakase
      args: 
      - email@email.com
      - Highrise
      - LOAD;Kase;19

    priority: "0"
    id: "1"
    run_at: 2011-02-21 13:30:38
    locked_at: 
    attempts: "0"
    last_error: 
  attributes_cache: {}

- !ruby/object:Delayed::Backend::ActiveRecord::Job 
  attributes: 
    created_at: 2011-02-21 13:30:38
    locked_by: 
    failed_at: 
    updated_at: 2011-02-21 13:30:38
    handler: |
      --- !ruby/struct:Delayed::PerformableMethod 
      object: LOAD;UserMailer
      method: :deliver_makeakaseteam
      args: 
      - email@email.com
      - Highrise
      - LOAD;Kase;19

    priority: "0"
    id: "2"
    run_at: 2011-02-21 13:30:38
    locked_at: 
    attempts: "0"
    last_error: 
  attributes_cache: {}

=> nil

来自(collectiveidea)延迟工作文档

由于在Rails 3中邮件程序的实现方式,我们不得不做一些工作才能使delay_job正常工作。

没有延迟的工作

Notifier.signup(@user).deliver

与延迟工作

Notifier.delay.signup(@user)

删除.deliver方法以使其起作用。 这并不理想,但是这是我们目前可以做的最好的事情。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM