按类别格式化电子邮件主题?

好的,这可能是一个奇怪的请求,所以我先在这里解释一下我的困境。

我们有一个 Discourse 实例,拥有大量用户。由于它是在长达二十年的邮件列表基础上构建的,因此有很多用户习惯以“邮件列表模式”使用。

目前我们有几个活跃的类别,但我们在电子邮件主题格式中使用类别名称,因为所有使用邮件列表的用户多年来收到的邮件都以 [SDL] 开头,并且他们的邮件过滤器会根据该字符串将邮件分类到不同文件夹中等等。

因此,我们的格式字符串如下,其中硬编码了 [SDL]……

%{optional_re}[SDL]%{optional_pm} %{topic_title}

……这个格式三年来一直运行良好。

但现在,我们要将一个老旧的、记录版本控制提交信息的邮件列表迁移到 Discourse 的一个类别中,以享受 Discourse 相比老旧邮件列表带来的诸多好处。这就带来了问题,因为那个邮件列表使用的是不同的标识符(当然是 [Commits])。

所以我现在需要在主题格式字符串中加入某个东西,使其能够唯一标识该类别,用作标识符,而不是硬编码的 [SDL] 字符串。

我不能使用现有的类别 slug 字符串,因为大多数类别都需要使用相同的字符串,而且即使它们不需要唯一(我假设),更改它们也会破坏所有指向我们论坛的现有链接。也不能使用类别名称,因为大多数类别只需要 [SDL],而且它们的名称通常太长,不适合用作标识符。

有什么办法可以解决这个问题吗?如果不行,我们能否在每个类别的设置中添加一个通用字符串,使其能够像 %{optional_cat} 一样在电子邮件主题格式字符串中访问?比如一个默认为空字符串的 %{cat_mailsubj}

谢谢!

编辑:看来我在 2017 年也曾提出过类似的问题:How to properly alter the database? - #8 by icculus ……是否有更好的方案,还是我应该重新启用那个补丁?

嗯,这确实有点棘手。你能提供一些具体的例子供我们斟酌吗?

“提交(Commits)”列表就是一个例子,但我们还有其他类似的场景:例如一个邮件列表,每当构建机器人(Buildbot)针对某个目标失败时就会发出警报;还有其他类似的自动化通知。这些通知通常只需要被注意到,但偶尔也需要针对特定主题进行一些简短的讨论。将这些通知从过时的邮件列表迁移到 Discourse,可以消除大量的界面摩擦和不稳定性,即使大多数用户仍主要通过邮件客户端与之交互。

对于这些情况,这仅仅是人们对 Web 界面(例如一个名为“SDL Buildbot 失败通知”的类别,点击进去即可查看具体主题)与邮件主题行前缀(如每个主题都带有"[BUILDBOT-SDL]")之间期望的文化差异。看来为特定类别的设置添加一个额外的字符串是值得的。