处理在Rails中发送许多电子邮件的最佳方法是什么?

时间:2009-01-25 09:31:37

标签: ruby-on-rails performance email

我知道将电子邮件持久保存到数据库中,然后让一些定期作业处理实际发送。 我知道ar_mailer gem会这样做。

还有其他方法吗?还有更好的选择吗? 简单来说,处理在Rails中发送许多电子邮件的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

ar_mailer是我知道发送多封电子邮件的最佳方式。设置起来非常直观。我会查看official documentationreally good blog post

D进制

答案 1 :(得分:1)

除了我想添加的其他答案之外:

ar_mailer可以用来发送“很多”电子邮件,但是如果你要发送很多电子邮件(我在想这里像Aweber,或者是CampaignMonitor,那里每小时可能有数十万封电子邮件)我我不确定ar_mailer是否理想。原因是它为每个电子邮件的数据库添加了单独的记录。想象一下,你是Aweber并且有一个客户发送电子邮件给他的10,000人名单。您只需创建10,000个活动记录对象,并将所有10,000个记录对象保存到数据库中。验证和回调等都是昂贵的。现在想象你有100个客户,其中10,000个人的列表都在那个小时发送电子邮件。我认为你的数据库会很痛苦,除非你可以消除验证/回调等,并进入较低级别的数据库调用。

另一种选择是将所有排队传递给Postfix或类似的东西。如果Postfix以某种方式在队列中间死亡,你可能无法从你的rails应用程序内部确定这个,所以它在那一点上有点脱钩,但可能更有效率。我没有尝试过任何这个,只是大声思考。

答案 2 :(得分:0)

我们正在卸载长任务,不仅包括电子邮件发送,还包括使用WorklingStarling的其他一些内容(请参阅Railscast了解如何使用)。还有其他选择,Github is using delayed_job