A categoria de e-mail exige reply_by_email_enabled?

Situação

  • reply_by_email_enabled desativado, não queremos que as pessoas respondam por e-mail
  • uma categoria restrita a administradores para notificações de um sistema externo
  • a categoria possui um endereço de e-mail configurado
  • email_in está habilitado
  • os e-mails são enviados para o endereço de e-mail da categoria
  • os e-mails estão retornando com erro BadDestinationAddress

A causa

Após uma hora de depuração, deparei-me com o seguinte commit: FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub

CORREÇÃO: Proibir respostas a categorias quando a resposta por e-mail estiver desativada (#33641)

Quando a configuração reply_by_email_enabled está definida como false, não incluímos mais um link de resposta nas notificações por e-mail. No entanto, não impedimos o recebimento real de e-mails em um endereço email_in configurado associado a uma categoria. Esta alteração leva em consideração a configuração em Email::Receiver#check_address.

e o código afetado deixará de retornar uma categoria se reply_by_email_enabled não estiver habilitado.

    def self.check_address(address, include_verp = false)
      # verifica apenas um grupo/categoria quando 'email_in' está habilitado
      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? <-- adicionado
      end

Por quê? :scream:

Tenho muitas perguntas:

  1. por que essa mudança? De fato? Ela torna o sistema apenas menos flexível. Se eu não quiser que as pessoas enviem e-mails para uma categoria, basta remover o endereço de e-mail da categoria?
  2. por que isso foi implementado dessa maneira?
  • aparentemente, o recebimento de e-mails em grupos não é um problema?
  • se reply_by_email_enabled for false, não há necessidade de procurar a categoria?
  • ao não retornar a categoria, o erro se torna BadDestinationAddress, o que é MUITO errado e MUITO difícil de depurar
  1. a configuração da qual isso agora depende repentinamente se chama resposta por e-mail. Isso não é o que estou fazendo.
  2. a mesma confusão é visível no título do PR, que se chama “proibir respostas a categorias”, o que não é o que está em questão (no Discourse, uma “resposta a uma categoria” nem é possível).

Além da forma como isso foi implementado, sinceramente, não consigo ver o ponto.

Não consigo pensar em NENHUMA situação em que simplesmente remover o endereço de e-mail da categoria não resolveria o problema se o objetivo for impedir que as pessoas enviem e-mails para uma categoria. E a implicação disso é que agora se tornou impossível ter uma categoria recebendo e-mails sem habilitar a resposta por e-mail em todo o site.

Se houver um motivo realmente bom que eu esteja perdendo, sinta-se à vontade para recategorizar como Contribute > Feature

5 curtidas

Na verdade, descobri isso por conta própria e já estou analisando.

Concordo que a correção feita em FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub foi ruim, pois dependia e introduziu um efeito colateral, mas não percebemos, pois os testes estão organizados de forma que as condições para acioná-lo não estavam presentes. Estou trabalhando para corrigir isso agora.

3 curtidas

Minha correção proposta:

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

3 curtidas

Isto foi mesclado @RGJ - você pode verificar após a atualização se sua configuração funciona como esperado?

2 curtidas

Sim, funciona perfeitamente agora! Obrigado :slight_smile:

2 curtidas