前一篇文章我们介绍了 Rails 4.0 的作业队列系统。今天介绍异步 ActionMailer。 在后台发送邮件是非常简单的,只需要简单的在 application.rb 中设置即可: 1 config.action_mailer.async = true 或者如果你只想在程序中指定异步邮件: 1 class WelcomeMailer
前一篇文章我们介绍了 Rails 4.0 的作业队列系统。今天介绍异步 ActionMailer。
在后台发送邮件是非常简单的,只需要简单的在 application.rb 中设置即可:
1 |
config.action_mailer.async = true |
或者如果你只想在程序中指定异步邮件:
1 |
class WelcomeMailer < ActionMailer::Base |
就这么简单,这样邮件的发送就会通过后台的作业来进行。
你可能还需要关心传递给 mailer 的参数是否被正确的处理,不要使用如下方法:
1 |
WelcomeMailer.welcome( @user ).deliver |
而是要这样:
1 |
WelcomeMailer.welcome( @user .id).deliver |
然后在你的 mailer 中:
1 |
class WelcomeMailer < ActionMailer::Base |
3 |
<a href= "http://my.oschina.net/u/191962" target= "_blank" rel= "nofollow" > @user </a> = User.find(id) |
切换
默认的队列系统是
Rails.queue
,但你可以自己定制一个队列系统,只需要重写
ActionMailer::Base#queue
即可:
1 |
class WelcomeMailer < ActionMailer::Base |
你定制的队列需要作业提供 #run 方法。
本文中的很多代码都来自于 Nick Plante'sresque_mailer gem.
英文原文