kar*_*rns 5 ruby-on-rails ruby-on-rails-6 action-mailbox
Rails 6 现在带有 Action Mailbox。文档和社区没有关于如何集成除最常见的服务(如 SendGrid)之外的各种服务的大量资源。
假设一个人使用 Google 的 Gsuite Gmail:
他们如何将其与 Action Mailbox 集成?
会使用 Gmail 的 API,还是不适合 Action Mailbox?
如果 Gmail 不起作用,那么 SendGrid 有什么不同使它能够适当地集成?
要将 IMAP 与 Rails 集成,请查看伟大的mail_room Gem
它是一个守护进程,您可以与您的应用程序一起启动,它监听几个 IMAP 收件箱,然后将它们转换为 Sidekiq Worker 或通过 http 将其推送到您的应用程序。
Gitlab 使用它进行邮件交互(回答线程、通过写入电子邮件创建问题)。
他们还有一个关于如何与 ActionMailbox 集成的部分。
Action Mailbox 是围绕实时从邮件传输代理 (MTA) 接收电子邮件而构建的,而不是定期从邮箱中获取电子邮件。也就是说,它接收通过 SMTP 发送的邮件,它不会从已经收到邮件的另一台服务器获取邮件(使用 IMAP 或 POP3)。
为此,它依赖于接收电子邮件并将电子邮件发送到 Action Mailbox 的外部(Rails)SMTP 服务。这些外部服务称为“入口”,在撰写本文时,有5 个可用入口。
在这五个中,四个是商业服务,它们将为您运行所需的 SMTP 服务器,然后将电子邮件“发送”到您的应用程序(通常作为 JSON 负载通过 webhook)。
您已经可以在 Rails 应用程序中使用这些服务并自己处理 webhooks,但 Action Mailbox 在上面构建了一组标准化的功能。几乎就像一组导轨来引导和加速这个过程。
此外,第五个入口是“中继”入口。这允许您在同一台机器上运行您自己支持的 MTA(SMTP 服务器),并将收到的电子邮件中继到 Action Mailbox(通常是原始电子邮件)。当前支持的 MTA 是:
要回答有关 Gmail 的具体问题,请执行以下操作:
- 他们如何将其与 Action Mailbox 集成?
他们不能直接。他们还需要设置上面列出的 7 个 MTA 之一,然后以某种方式将电子邮件发送给它。交付可以通过以下方式完成:
- 会使用 Gmail 的 API,还是不适合 Action Mailbox?
即使有办法让 Gmail 对传入的电子邮件触发 webhook(我不知道上述高级路由规则之外的任何特殊传递选项),目前也无法将该理论 webhook 连接到 Action Mailbox。
- 如果 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 记录。
| 归档时间: |
|
| 查看次数: |
617 次 |
| 最近记录: |