5

Rails 6 现在带有 Action Mailbox。文档和社区没有关于如何集成最常见服务(如 SendGrid)之外的各种服务的大量资源。

假设一个人使用 Google 的 Gsuite Gmail:

  1. 他们如何将其与 Action Mailbox 集成?

  2. 有人会使用 Gmail 的 API,还是不适合 Action Mailbox?

  3. 如果 Gmail 无法正常工作,SendGrid 有什么不同可以使其适当集成?

4

3 回答 3

5

Action Mailbox 是围绕实时接收来自邮件传输代理 (MTA) 的电子邮件而构建的,而不是定期从邮箱中获取电子邮件。也就是说,它接收通过 SMTP 发送的邮件,它不会从另一个已经收到邮件的服务器获取邮件(使用 IMAP 或 POP3)。

为此,它依赖于外部(Rails)SMTP 服务接收电子邮件,然后将电子邮件传递到 Action Mailbox。这些外部服务称为“入口”,在撰写本文时,有5 个可用入口

在这五个中,四个是商业服务,它们将为您运行所需的 SMTP 服务器,然后将电子邮件“传递”到您的应用程序(通常作为 JSON 有效负载通过 webhook)。

您已经可以在 Rails 应用程序中使用这些服务并自己处理 webhook,但 Action Mailbox 在顶部构建了一组标准化的功能。几乎就像一组导轨来引导和加速这个过程。

此外,第五个入口是“中继”入口。这允许您在同一台机器上运行自己支持的 MTA(SMTP 服务器),并将收到的电子邮件中继到操作邮箱(通常是原始电子邮件)。当前支持的 MTA 有:

要回答您有关 Gmail 的具体问题:

  1. 他们如何将其与 Action Mailbox 集成?

他们不能直接。他们还需要设置上面列出的 7 个 MTA 之一,然后以某种方式将电子邮件发送给它。交付可以通过以下方式完成:

  • 用户在邮箱级别管理的转发规则
  • 由管理员在域级别管理的双重递送、拆分递送或其他一些高级路由规则
  1. 有人会使用 Gmail 的 API,还是不适合 Action Mailbox?

即使有办法让 Gmail 在收到的电子邮件上触发 webhook(我不知道上述高级路由规则之外的任何特殊传递选项),目前也无法将该理论 webhook 连接到 Action Mailbox。

  1. 如果 Gmail 无法正常工作,SendGrid 有什么不同可以使其适当集成?

Sendgrid(以您的示例为例,其他的工作方式或多或少相同)提供了一个入站邮件处理 API。同样重要的是,Rails 团队已经构建了一个传入电子邮件控制器来与该 API 集成。

鉴于缺少 Gmail API 和 Rails 入口控制器,我能想到的将 Action Mailbox 连接到现有 Gmail 邮箱的唯一方法是使用其他一些代码来检查邮箱,重新格式化获取的电子邮件然后冒充为受支持的 MTA 之一,将其传送到 Action Mailbox。

这将是一个有趣的练习,并且可能会成为一个受欢迎的宝石,但它会非常像一个杂物。如果做得好,这是一个光荣的组合,但仍然是一个组合。


另一种选择是让您的 example.com 域正常发送到 Gmail,并为您的 Action Mailbox 电子邮件设置另一个域。您可以使用单独的域 example.org 或子域 app.example.com。

这将涉及设置 7 个受支持的 SMTP 服务器之一,并将 example.org 或 app.example.com 的 MX 记录指向这些服务器。


小知识: MTA 的另一个名称是 Mail eXchager,因此 DNS 邮件记录的名称是 MX 记录。

于 2020-12-13T07:27:29.070 回答
2

要将 IMAP 与 Rails 集成,请查看伟大的mail_room Gem

这是一个守护进程,您可以在您的应用程序旁边启动它,它侦听几个 IMAP 收件箱,然后将它们转换为 Sidekiq Worker 或通过 http 将其推送到您的应用程序。

Gitlab 将它用于他们的邮件交互(回答线程,通过写电子邮件创建问题)。

他们还有一个关于如何与 ActionMailbox 集成的部分。

于 2021-04-23T06:50:48.973 回答
0

如果您下定决心这样做,Gmail 从第一天起就提供 IMAP IDLE(推送)支持。

编写一个监视 Gmail 收件箱并使用格式正确的 JSON 有效负载调用 rails action 邮箱 webhook 端点的小型守护程序将非常容易。

于 2021-03-31T13:05:23.123 回答