如何使用在后台发送电子邮件的Rails实现邮件系统

我想用Ruby on Rails实现一个可靠的邮件系统,它在后台发送电子邮件,因为发送邮件有时需要10秒或更长时间,所以我不希望用户等待。 我想到的一些想法:

  1. 写入数据库a中的表有一个后台进程可以检查并发送电子邮件(关注:对数据库的潜在多次读/写会减慢我的应用程序)

  2. 消息队列后台进程/ Rake任务(关注:如果服务器崩溃排队的邮件将丢失,如果许多电子邮件也会占用大量内存)

我想知道你是否知道一个在可靠性和性能之间取得平衡的好解决方案。

我认为Starling和Workling将能够帮助你=)观看这个railscast: http: //railscasts.com/episodes/128-starling-and-workling

您可以实现该function或依赖外部服务。

我在过去的两个月里一直在使用PostageApp ,我对它非常满意。 另一个解决方案是邮戳 。

否则,如果要对其进行编码,首先需要一个队列系统。 对于Rails,您可以使用DelayedJob或Resque 。 在后台发送电子邮件可能是最简单的解决方案,“问题”是处理失败和重试。

你看过邮件队列插件了吗?

http://code.google.com/p/mail-queue/

文档似乎建议将邮件存储在数据库表中,从而至少避免#2。