类别邮件需要 reply_by_email_enabled 吗?

现状

  • reply_by_email_enabled(启用邮件回复)已禁用,我们不希望用户通过邮件进行回复
  • 一个仅限管理员访问的分类,用于接收来自外部系统的通知
  • 该分类已配置了电子邮件地址
  • email_in(邮件接收)已启用
  • 邮件已发送至该分类的邮箱地址
  • 邮件因 BadDestinationAddress(错误的目标地址)而被退回

原因

经过一个小时的调试,我发现了以下 FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub

修复:当禁用邮件回复时,禁止向分类回复 (#33641)

reply_by_email_enabled 设置设为 false 时,我们不再在电子邮件通知中包含回复链接。然而,我们并未阻止向与分类关联的配置好的 email_in 地址发送实际电子邮件。此更改在 Email::Receiver#check_address 中考虑了该设置。

以及受影响的代码reply_by_email_enabled 未启用时将不再返回分类。

    def self.check_address(address, include_verp = false)
      # 仅在启用 'email_in' 时检查组/分类
      if SiteSetting.email_in
        group = Group.find_by_email(address)
        return group if group

        category = Category.find_by_email(address)
        return category if category && SiteSetting.reply_by_email_enabled? <-- 新增
      end

为什么? :scream:

我有许多疑问:

  1. 为什么要做这个更改?无论如何,这只会使系统更加不灵活。如果我不希望人们向分类发送邮件,我只需从分类中移除邮箱地址即可?
  2. 为什么要以这种方式实现?
  • 似乎向组发送邮件不是问题?
  • 如果 reply_by_email_enabled 为 false,则甚至无需查找分类?
  • 通过不返回分类,错误变成了 BadDestinationAddress,这是非常错误的,而且非常难以调试
  1. 现在突然依赖的这个设置名为回复邮件。但这并不是我正在做的事情。
  2. PR 标题中也存在同样的混淆,标题为“禁止向分类回复”,但这与此无关(在 Discourse 中,“向分类回复”甚至是不可能的)。

除了实现方式之外,我实在看不出这样做的好处。

我想不出任何场景,说明如果希望防止人们向分类发送邮件,仅从分类中移除邮箱地址无法解决问题。其结果是,现在如果不启用全站邮件回复功能,就不可能让分类接收邮件。

如果有一个我遗漏的充分理由,欢迎将其重新分类为 Contribute > Feature(贡献:功能)

5 个赞

我自己已经发现了这个问题,并且正在研究。

我同意 FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub 中进行的修复很糟糕,因为它依赖并引入了一个副作用,但我们没有注意到,因为测试的安排使得触发它的条件不存在。我正在努力纠正这个问题。

3 个赞

我的建议修复:

https://github.com/discourse/discourse/pull/37227

3 个赞

这已合并 @RGJ - 您可以在更新后验证您的配置是否按预期工作吗?

2 个赞

是的,现在完美运行了!谢谢你 :slight_smile:

2 个赞