分类邮件是否需要 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. 这个现在突然依赖的设置被称为回复邮件。这不是我正在做的。

除了实现方式之外,我真的看不出它的意义所在。

我想不出任何情况,如果有人想阻止人们通过电子邮件发送到某个类别,而简单地从该类别中删除电子邮件地址不能完成工作。其影响是,现在不可能在不启用全站回复邮件的情况下让类别接收电子邮件。

如果我错过了非常充分的理由,请随时将其重新归类为 Feature

3 个赞