关于邮件行为的更改

在最新的更新后,Discourse 突然发送邮件,邮件前缀是:

“Someone replied to a topic you are Watching.”(有人回复了您正在关注的主题。)

我的所有用户都在强烈抱怨,而且没有用户更改任何邮件设置。

所有人都说这非常烦人。

那么,发生了什么?我们如何才能关闭它并恢复到正常的纯文本行为? 我认为这个改动没有做好,而且开发者甚至没有注意到它,因为“watching”中的 W 用了大写,这是不必要的。

我认为让 Andrew 社区成员感到恼火的根源是 %{header_instructions}

该令牌会扩展成一大段样板文字(“请勿回复……”、链接、说明等),并且它会出现在许多通知模板的邮件正文的最顶部。对于有经验的用户来说,它会主导整个信息,读起来像是唠叨而不是帮助。

目前没有全站范围的设置可以禁用或移动它。要删除它,管理员必须在“管理”→“邮件”→“模板”下单独编辑每个邮件模板。

在当前的 latest-release(我使用的是 latest-release +17)上,应该可以通过一个 Rails 脚本来集中解决这个问题,针对那些已经有数据库覆盖的模板,例如,从正文开头出现的 %{header_instructions} 中删除它。这部分很简单,使用了 EmailTemplate 模型。

将同样的更改应用于所有默认模板(包括那些尚无覆盖的模板)将需要通过内部查找 API 拉取默认模板正文,从而创建覆盖。这是可行的,但这取决于 Discourse 的内部机制,并且在广泛推荐之前需要维护者进行审查/验证。

因此,根本问题不仅仅是 %{header_instructions} 的内容,而是它实际上是全局的样板文字,却没有管理员级别的开关,删除或移动它需要逐个模板进行手动操作或使用不受支持的脚本。

@Ethsim2 谢谢,这真的很棒。但为什么会突然改变呢?我不是阅读或查找更改日志的专家。

@Andro 是的——这是一个完全合理的问题。

之所以说是“突然”出现,是因为 %{header_instructions} 不是您本地更改的内容:它是 Discourse 注入到许多通知邮件中的一个核心提供的块。如果核心更改了措辞或包含它的时机,即使没有触动任何管理员设置,每个人也会立即注意到。

我不想在没有具体提交引用的情况下过度断言,但最可能的原因是核心最近更改了 %{header_instructions} 展开为的默认文本(例如,添加了“有人回复了您正在关注的主题。”这一行),或者更改了该块包含在邮件正文中的时机,针对的是“正在关注的主题”通知。

如何确认来源:

  • 在“管理”→“邮件”→“邮件设置”→“模板”中,查看您的用户收到的通知模板(正在关注/已跟踪/已回复/已提及)。
  • 如果正文以 %{header_instructions} 开头,那就是新的前置文本的来源。
  • 删除它,或将其移到 %{message} / %{context}(甚至 %{reply_instructions})的下方,将恢复到以前的“纯文本”行为。

不幸的是,目前没有一个站点范围的开关可以控制此项。每个受影响的模板都必须单独调整,这就是为什么当核心行为发生变化时,这会显得很突然且难以控制。

如果您使用的是托管的 Discourse,实际的解决方法是只编辑您的用户实际收到的那少数几个模板,而不是全部。

这些预览是在几天前添加的