2

我正在考虑导入几千个 Thunderbird 文件夹的想法,每个文件夹当然包含许多电子邮件,作为一组 Emacs 的 Gnus 邮件组。每个邮件组名称都来自文件夹层次结构。由于数量的原因,这项工作会相当乏味,所以如果可能的话,我会自动化这个大规模的导入。

在可用的后端中,nnfolder在这种情况下似乎是最有前途的。我认为从 Gnus 中填充邮件组会更好。否则,我必须彻底了解nnfolder格式,而这可能需要多次迭代才能真正正确。此外,随着电子邮件的不断涌入,迭代可能会变得难以在不丢失任何东西的情况下正确组织。

我想我必须重新设置所有内容,在所选邮件组是 Thunderbird 来源的函数的约束下,覆盖标准的 Gnus 选择机制。过去我做过一些 Gnus 编码,但是由于我已经十几年没有接触 Emacs,所以一切都非常生疏。对于如何尽可能高效和快速地完成这项任务,我有点迷茫。所以我的问题是:你会如何处理它?还是我应该更深入地探索一些聪明的 Gnus 隐藏角落?:-)

弗朗索瓦

PS在我写完这个问题后,我发现 Gnus 有一个很好的帮助功能实现这个目标。这个想法是首先复制~/Mail目录中的所有 Thunderbird 文件夹文件,因为它们是用于内容的,但正确重命名。完成此操作后,M-x nnfolder-generate-active-file立即为每个复制的文件夹编辑内容,保留~备份,生成 NOV 数据,创建一个邮件组,当然还有调整~/Mail/active文件。

为了复制目录下的文件夹~/.thunderbird/LOGIN/Mail/Local Folders/,我编写了一个小的 Python 脚本。它忽略所有文件,并在目录中.msf递归。.sbd相对于 的文件夹路径名称将Local Folders/其所有.sbd/字符串转换为句点以生成邮件组名称,还小写,将空格和下划线转换为破折号,并适当地处理其他特殊字符。特别是,非 ASCII 字符处理不当,nnfolder在这里和那里混淆 UTF-8 和 ISO-8859-1。该脚本还必须跳过msgfilterrules.dat和可能draftsjunk等等。

我注意到两个需要注意的细节:

  • Thunderbird 本身可用于在复制文件夹之前压缩文件夹,否则可能会不情愿地恢复已删除的邮件。
  • (setq nnmail-use-long-file-names t)~/.emacs在整个操作之前需要。

批量转换中止,说它无法解密其中一条消息。我将有问题的文件夹移开,然后,冗长的操作成功了。

4

0 回答 0