将邮件列表迁移到 Discourse(mbox、Listserv、Google Groups 等)」

好吧,这真让人大失所望!

我原以为 Google 自 2015 年 2 月以来就没有再动过它,但我错了。

看来它在 2020 年进行了全面 redesign,并在 2021 年更新了标志。

我考虑使用 GMAIL 和 Discourse 的 API,将邮件线程转换为 Discourse 帖子。我已经查阅了 Google API,并成功获取了邮件,但还有几个问题:

  1. 邮件可以以原始格式下载,即邮件“原始消息”的 base64 编码值。这与 mbox 格式相同还是不同?
  2. 是否有任何示例说明如何通过 API 向 Discourse 添加帖子和附件?

有意思。是否可以使用 Gmail API 来访问 Google 群组中的邮件,还是您只是拥有一个包含所有发送至该群组的邮件的 Gmail 账户?

建议您将所有消息保存为单独的 *.eml 文件。如果整条消息(包括邮件头)采用 base64 编码,则在保存之前需要对其进行解码。之后,请按照 Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc) 中的步骤操作(无需执行 Google 群组相关步骤)。导入脚本将自动处理帖子、附件以及更多内容。

1 个赞

我是该组成员,因此可以使用我的邮箱拉取邮件。整个电子邮件消息(包括邮件头)都将作为编码字符串的一部分。

我将尝试使用您的方法将至少一个主题导入 Discourse。

1 个赞

好吧,在这种情况下,您可能甚至不需要使用 Gmail API。将像 Thunderbird 这样的电子邮件客户端连接到您的 Gmail 账户,并导出单封邮件或 mbox 文件,应该就足够了……

现在我真的很想知道这是如何工作的。我原本以为 Google Groups 不支持 NNTP。

1 个赞

这不是 NNTP,而是 REST API。

3 个赞

我的邮箱容量超过 200GB,若要获取特定群组相关的邮件,我可能需要通过 Thunderbird 下载所有这些邮件。但 Thunderbird 并未显示 Google Groups 的所有邮件,它们都只显示在收件箱中。而且,它每次仅下载 200 封邮件。因此,我不确定获取所有邮件需要多长时间。

是否有其他方法可以直接获取 Google Groups 的数据并导出为 mbox 格式?

您好,Gerhard Schlager,

我们正尝试将我们的 Google 群组迁移到 Discourse。我们已按照文档中的上述步骤操作,但系统仅在 Discourse 中创建了分类,并未导入数据。如果您能尽快对此作出回复,我们将不胜感激。

我们之前知道的唯一方法已不再有效。如果您知道任何获取数据的方法,请立即执行。如果您知道某种获取数据的方法,最好在该方法也失效之前尽快开始获取。

如果数据位于您的邮箱中,则有可能利用 Gmail API 将其拉取下来。但这会很棘手,因为开发者需要能够访问包含 Google 群组数据的邮箱才能编写相关代码。

除非是要求此功能的企业主客户,否则我怀疑 cdck(即 discourse.org)近期会编写此类代码。您可以在 Marketplace 中询问。对于此类工作,我通常不会考虑低于 2000 美元的项目;鉴于我过去对 Google 群组导入脚本的挫折经历,我可能会要求 5000 美元。当然,其他人可能拥有更高的技能或更多的耐心。

一种可能有效的方法是使用 Integromat 编写转换流程,前提是 Google Groups 和 Discourse 应用可用。或者,也可以自行通过 HTTP 调用其 REST API。

Integromat 是一个集成数据迁移系统。它功能非常强大,几乎无需编程即可完成大量任务。

我已经尝试过 Google Takeout,将自己设为我们的 Google Workspace 群组的所有者,并能够下载 Google 群组的对话。目前仍在尝试导入。

这种方法有几个缺点。

  1. 如果需要进行增量更新,则需要再次下载完整数据。
  2. 无法下载选择性的群组数据,而是会下载用户拥有所有者或管理员权限的所有群组的数据。
  3. 需要与 Google Workspace 管理员合作启用 Takeout,因为它默认情况下是禁用的。
3 个赞

您好 @Anjana_Raghavendra_P - 您是否设法使用此方法进行了简单的导入?

非常感谢!

是的,我能够从 takeout 下载 mbox 文件,并按照原始帖子中提到的步骤进行导入。

后来,由于我们使用的是 Discourse 的 PAAS 服务,因此将文件提供给了 Discourse 技术团队,他们成功地将内容导入了 Discourse 平台。

2 个赞

很高兴听到这个消息 - 谢谢!

我在 settings.yml 中将第一行 data_dir: /shared/import/data 从默认值更改时遇到了 @sturdy2 的问题。

要点:不要更改它,因为它指的是导入 Docker 内部的路径,而不是主机器上的路径。

我有一个关于重新启动导入的问题?

我不是开发人员,但我设法成功导入了来自 Topicbox Group Email 的两个 mbox 文件。我将我的测试导入设置在 Digital Ocean 上设置的 Discourse 的临时实例中。并且,由于上面关于设置 category.custom_fields["import_id"] = "mydir" 的说明,我能够将我的两个 mbox 样本文件导入到我已创建的 Discourse 的现有类别中。

太棒了!但是,如果我想导入更多 mbox 文件,我是否必须运行 FAQ 2.2 中提到的所有命令,该命令指示它将“删除所有内容”?

2 个赞

我成功地为两个不同的类别设置了我的“import_id”作为初始测试导入。它奏效了!我的两个 mbox 文件已导入到我指定的现有类别中。

我最终需要处理 18 个不同的类别。我对 Ruby 一无所知。我能否创建一个文件来为我的每个不同类别设置目录名称,这样我就不必在 Ruby 命令行界面中手动输入每一行?

2 个赞

是的。搜索更多 Google “ruby for each”。并创建一个包含部分类别的数组。

1 个赞

不,你不需要。导入器支持增量导入。下次运行时,它只会导入新数据。除非你想从头开始,否则请不要运行 2.2 中提到的命令。

不幸的是,目前还不可能。如果你想导入到现有类别中,则必须为每个类别分配 import_id

2 个赞

感谢 @gerhard 如此出色的工作!我不是开发者,但我成功地从一个名为 Topicbox 的邮件列表系统迁移。我从 Topicbox 获取了 mbox 文件导入 Discourse。在试错过程中,我将所有内容记录在了博客文章中。所以,如果可以的话?我想在此分享这篇博客文章的链接,供其他想要迁移到 Discourse 的 Topicbox 用户参考。

4 个赞