[英]Rails ActionMailer add a delay for few milliseconds before sending an email
[英]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.