场景
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
为什么?
我有很多问题:
- 为什么要进行此更改? 为什么? 它只会使系统更加不灵活。如果我不想让人们通过电子邮件发送到某个类别,我只需从该类别中删除电子邮件地址即可?
- 为什么以这种方式实现?
- 显然,向群组发送电子邮件没有问题?
- 如果
reply_by_email_enabled为 false,则无需遍历类别? - 通过从类别列表中删除类别,错误会变成
BadDestinationAddress,这非常错误且非常难以调试
- 这个现在突然依赖的设置被称为回复邮件。这不是我正在做的。
除了实现方式之外,我真的看不出它的意义所在。
我想不出任何情况,如果有人想阻止人们通过电子邮件发送到某个类别,而简单地从该类别中删除电子邮件地址不能完成工作。其影响是,现在不可能在不启用全站回复邮件的情况下让类别接收电子邮件。
如果我错过了非常充分的理由,请随时将其重新归类为 Feature