Rails 6 操作邮箱和 Gmail 集成如何
Rails 6 Action Mailbox and Gmail Integration How To
Rails 6现在带有Action Mailbox。文档和社区没有关于如何集成最常见服务(例如 SendGrid)之外的各种服务的丰富资源。
假设某人使用 Google 的 Gsuite Gmail:
他们如何将其与 Action Mailbox 集成?
会使用 Gmail 的 API,还是不适合 Action Mailbox?
如果 Gmail 不起作用,SendGrid 有何不同之处使其能够适当集成?
Action Mailbox 是围绕实时接收来自邮件传输代理 (MTA) 的电子邮件而构建的,而不是定期从邮箱中获取电子邮件。也就是说,它接收通过 SMTP 发送的邮件,它不会从已经收到邮件的另一台服务器上获取邮件(使用 IMAP 或 POP3)。
要使其正常工作,它依赖于外部(到 Rails)SMTP 服务接收电子邮件,然后将电子邮件传送到 Action Mailbox。这些外部服务称为“Ingresses”,截至撰写本文时,有 5 available ingresses.
在这五个中,四个是商业服务,它们将为您 运行 所需的 SMTP 服务器,然后将电子邮件“传送”到您的应用程序(通常作为 JSON 通过 webhook 的有效负载) .
您已经可以在 Rails 应用程序中使用这些服务并自行处理 webhooks,但 Action Mailbox 在其上构建了一组标准化的功能。几乎就像一组 rails 来指导和加速这个过程。
另外,第五个入口是“中继”入口。这允许您在同一台机器上 运行 您自己支持的 MTA(SMTP 服务器),并将收到的电子邮件中继到 Action Mailbox(通常是原始电子邮件)。当前支持的 MTA 是:
回答有关 Gmail 的具体问题:
- How could they integrate that with Action Mailbox?
他们不能直接。他们还需要设置上面列出的 7 个 MTA 之一,然后以某种方式将电子邮件发送给它。可以通过以下方式完成交付:
- 用户在邮箱级别管理的转发规则
- 双重交付、拆分交付或其他advanced routing rule 由域级管理员管理
- Would one use Gmail's API, or would that not be appropriate for Action Mailbox?
即使有办法让 Gmail 对收到的电子邮件触发 webhook(我不知道上述高级路由规则之外的任何特殊传递选项),目前也没有办法将该理论 webhook 连接到行动邮箱。
- If Gmail doesn't work, what is different about SendGrid that makes it integrate appropriately?
Sendgrid(使用您的示例,其他的工作方式或多或少相同)提供入站邮件处理 API。同样重要的是,Rails 团队构建了一个 incoming email controller 来与 API 集成。
鉴于缺少 Gmail APIs 和缺少 Rails 入口控制器,我能想到的将 Action Mailbox 连接到现有 Gmail 邮箱的唯一方法是一些其他代码来检查邮箱,重新格式化获取的电子邮件,然后冒充受支持的 MTA 之一将其发送到 Action Mailbox。
这将是一个有趣的练习,并且可能会成为一个流行的练习 gem,但它很可能是一种拼凑。如果做得好,那就是光荣的拼凑,但仍然是拼凑。
另一种选择是让您的 example.com 域照常发送到 Gmail,并为您的 Action Mailbox 电子邮件设置另一个域。您可以使用单独的域 example.org 或子域 app.example.com.
这将涉及设置 7 个受支持的 SMTP 服务器之一,并将 example.org 或应用程序的 MX 记录指向这些服务器。example.com。
额外小知识: MTA 的另一个名称是 Mail eXchager,因此 DNS 邮件记录的名称是 MX 记录。
如果您执意要这样做,Gmail 从第一天起就支持 IMAP IDLE(推送)。
编写一个监视 Gmail 收件箱并使用格式正确的 JSON 负载调用 rails 操作邮箱 webhook 端点的小型守护程序非常容易。
要将 IMAP 与 Rails 集成,请查看伟大的 mail_room
Gem
这是一个守护进程,您可以从您的应用程序开始,它会监听几个 IMAP 收件箱,然后将它们转换为 Sidekiq Worker 或通过 http 将其推送到您的应用程序。
Gitlab 使用它进行邮件交互(回答线程,通过写邮件创建问题)。
他们还有一节介绍如何 integrate with ActionMailbox。
Rails 6现在带有Action Mailbox。文档和社区没有关于如何集成最常见服务(例如 SendGrid)之外的各种服务的丰富资源。
假设某人使用 Google 的 Gsuite Gmail:
他们如何将其与 Action Mailbox 集成?
会使用 Gmail 的 API,还是不适合 Action Mailbox?
如果 Gmail 不起作用,SendGrid 有何不同之处使其能够适当集成?
Action Mailbox 是围绕实时接收来自邮件传输代理 (MTA) 的电子邮件而构建的,而不是定期从邮箱中获取电子邮件。也就是说,它接收通过 SMTP 发送的邮件,它不会从已经收到邮件的另一台服务器上获取邮件(使用 IMAP 或 POP3)。
要使其正常工作,它依赖于外部(到 Rails)SMTP 服务接收电子邮件,然后将电子邮件传送到 Action Mailbox。这些外部服务称为“Ingresses”,截至撰写本文时,有 5 available ingresses.
在这五个中,四个是商业服务,它们将为您 运行 所需的 SMTP 服务器,然后将电子邮件“传送”到您的应用程序(通常作为 JSON 通过 webhook 的有效负载) .
您已经可以在 Rails 应用程序中使用这些服务并自行处理 webhooks,但 Action Mailbox 在其上构建了一组标准化的功能。几乎就像一组 rails 来指导和加速这个过程。
另外,第五个入口是“中继”入口。这允许您在同一台机器上 运行 您自己支持的 MTA(SMTP 服务器),并将收到的电子邮件中继到 Action Mailbox(通常是原始电子邮件)。当前支持的 MTA 是:
回答有关 Gmail 的具体问题:
- How could they integrate that with Action Mailbox?
他们不能直接。他们还需要设置上面列出的 7 个 MTA 之一,然后以某种方式将电子邮件发送给它。可以通过以下方式完成交付:
- 用户在邮箱级别管理的转发规则
- 双重交付、拆分交付或其他advanced routing rule 由域级管理员管理
- Would one use Gmail's API, or would that not be appropriate for Action Mailbox?
即使有办法让 Gmail 对收到的电子邮件触发 webhook(我不知道上述高级路由规则之外的任何特殊传递选项),目前也没有办法将该理论 webhook 连接到行动邮箱。
- If Gmail doesn't work, what is different about SendGrid that makes it integrate appropriately?
Sendgrid(使用您的示例,其他的工作方式或多或少相同)提供入站邮件处理 API。同样重要的是,Rails 团队构建了一个 incoming email controller 来与 API 集成。
鉴于缺少 Gmail APIs 和缺少 Rails 入口控制器,我能想到的将 Action Mailbox 连接到现有 Gmail 邮箱的唯一方法是一些其他代码来检查邮箱,重新格式化获取的电子邮件,然后冒充受支持的 MTA 之一将其发送到 Action Mailbox。
这将是一个有趣的练习,并且可能会成为一个流行的练习 gem,但它很可能是一种拼凑。如果做得好,那就是光荣的拼凑,但仍然是拼凑。
另一种选择是让您的 example.com 域照常发送到 Gmail,并为您的 Action Mailbox 电子邮件设置另一个域。您可以使用单独的域 example.org 或子域 app.example.com.
这将涉及设置 7 个受支持的 SMTP 服务器之一,并将 example.org 或应用程序的 MX 记录指向这些服务器。example.com。
额外小知识: MTA 的另一个名称是 Mail eXchager,因此 DNS 邮件记录的名称是 MX 记录。
如果您执意要这样做,Gmail 从第一天起就支持 IMAP IDLE(推送)。
编写一个监视 Gmail 收件箱并使用格式正确的 JSON 负载调用 rails 操作邮箱 webhook 端点的小型守护程序非常容易。
要将 IMAP 与 Rails 集成,请查看伟大的 mail_room
Gem
这是一个守护进程,您可以从您的应用程序开始,它会监听几个 IMAP 收件箱,然后将它们转换为 Sidekiq Worker 或通过 http 将其推送到您的应用程序。
Gitlab 使用它进行邮件交互(回答线程,通过写邮件创建问题)。
他们还有一节介绍如何 integrate with ActionMailbox。