9

我一直在尝试找出在 Rails 应用程序中处理传入电子邮件的最佳方法。我意识到“最佳实践”是相当主观的,所以我首先要说明我的主要关注点是可扩展性和效率。这是一个问题,主要是因为我的使用将涉及处理潜在的大型附件。

好像就在昨天,接受的方法是使用 ActionMailer 来接收电子邮件,但最近我偶然发现几篇文章说这是低效的,因为它会为每封电子邮件产生一个新的 rails 实例(在高容量时会很糟糕)。

最近,这篇文章引起了我的注意:http: //jasonseifer.com/2009/04/24/receving-email-with-rails

这篇文章讨论了一个精简版的 ActionMailer 系统,它不会强制生成整个 rails 实例,但评论讨论了其他几个选项,例如专用邮件目录 (maildir?) 和 imap/pop 检索。

我的问题是:是否有人对当前在 Rails 应用程序(包括附件)中处理传入电子邮件的最佳选择有什么想法?

4

5 回答 5

6

我维护Fetcher 插件,用于从与 cron 一起使用的 IMAP 服务器下载电子邮件。我曾经使用守护进程,但很难继续运行(即使使用监视器),因为 Ruby 会挂起。Cron 适合我的工作量,但它确实每分钟生成一次 Rails 进程。

要处理附件,请查看MMS2R库。它有一个很好的界面,可以从电子邮件中获取文件。

我向我推荐的另一种方法是为收到的每条消息触发一个 HTTP 帖子。然后,您可以扩展您的 Web 层来处理它。

无耻插件:您可能想查看 Mike Mondragon 和我的PeepCode 书籍,了解使用 Ruby 接收电子邮件

于 2009-08-16T07:52:15.943 回答
4

您可以尝试使用http://cloudmailin.com/ 之类的服务

于 2010-10-27T23:48:42.377 回答
3

为了通过 HTTP 将电子邮件从 Postfix 中继到 Rails 应用程序,我刚刚写了一篇关于我们如何做的文章。

这实际上很简单,但我们还利用 Postfix 的功能来延迟无法转发的电子邮件。到目前为止,我还没有在其他地方看到过。有关详细信息,请参阅http://www.doorkeeperhq.com/developer/smtp-to-web-api

于 2013-07-30T05:13:28.200 回答
1

在 mms2r 中,MMS2R#default_media仅返回最大的视频附件(如果存在),或最大的图像附件(如果存在),或最大的文本附件(如果存在),按此顺序。 MMS2R#default_text如果存在,则返回最大的文本/纯附件。您还可以通过 mms2r 的媒体哈希直接访问任何附件,例如 MMS2R#media。 MMS2R#media由 mimetype 键控,键引用的值是该类型的媒体数组。因此,如果 MMS2R 处理的电子邮件中有两个 jpeg 附件,您可以通过使用 image/jpeg 键入媒体散列来将它们作为数组访问,例如MMS2R#media['image/jpeg']

当 MMS2R 第一次处理电子邮件时,它找到的任何附件都会被解码并存储在该类型的媒体数组中。正如我所说,该数组然后由MMS2R#media哈希中的 mimetype 键入。

买这本书,我需要在收到带有 Ruby 的电子邮件时支付我的抵押 PeepCode 书

于 2009-08-21T06:59:39.837 回答
0

我最近编写了一个守护进程,它使用 LMTP 接收来自 Postfix 的邮件(它使用 EventMachine 并且非常快速和健壮)并将其保存到 MongoDB。从这个意义上说,它消除了中间人(IMAP 服务器 + IMAP 客户端)。这种方法提供了几乎无限的可扩展性和冗余。几乎可以立即添加其他后端支持(MySQL、Redis 等)。

已收到

于 2011-05-01T14:17:06.690 回答