Action Mailbox 是 Rails 6 推出的第二个全新框架(第一个是 Action Text)。它用于将收到的邮件路由到类似控制器的 Mailbox 进行处理。它内置了对 Amazon SES、Mailgun、Mandrill 和 SendGrid 的入口支持。您还可以通过 Postfix 入口直接处理入站邮件。
入站邮件被转换为使用 Active Record 的 InboundEmail 记录,具有生命周期跟踪、通过 Active Storage 将原始邮件存储到云存储,以及默认启用的焚毁机制负责任地处理数据。这些入站邮件使用 Active Job 异步路由到一个或多个专用的 Mailbox,这些 Mailbox 可以直接与您的域模型的其余部分进行交互。
与 Action Text 和 Active Storage 一样,该框架是从 Basecamp 3 中提取出来的。我们一直使用类似的方法来处理从转发邮件到邮件回复再到消息和讨论的一切。在将这些想法提取到 Action Mailbox 后,我们将该框架重新集成到 Basecamp 中,并且我们已经运行了我们今天共享的代码一个多月了。
是的,Rails 已经有了一个非常基础的使用 Action Mailer 接收邮件的方式,但它并未得到充分的开发,与发送邮件的任务缺乏协调性,并且在与流行的入站邮件处理平台集成方面没有提供任何帮助。Action Mailbox 取代了 Action Mailer 的接收部分,Action Mailer 的接收部分将在适当的时候被弃用。
Rails 6 正在逐步接近,但仍有一段距离——我们希望在 2019 年初开始 Beta 测试。尽管如此,Action Mailbox 已经相当成熟,如果您想尝试一些新东西,甚至可以将其与 Rails 5.2 应用程序一起使用。请准备好在我们的社区审查和合并到 rails/rails 的过程中,可能会有一些变化。
Action Mailbox 框架基于 Jeremy Daer 的想法,而这个特定的实现是由我本人和 George Claghorn 合作完成的。
作为 Action Mailbox 引入的一部分,我计划在不久的将来录制一个视频来展示基本用法。但代码已经准备就绪,并且已经进行了一定的文档记录,任何人都可以深入研究。所以,为什么还要等待呢!
有了 Action Text 和 Action Mailbox,Rails 6 已经成为该框架历史上最重要的版本之一。而且我们还没有完成!我们的计划是初步在 2019 年明尼阿波利斯 RailsConf 上推出一个候选发布版本。请通过试用 Action Mailbox 来帮助我们实现这个承诺!