Situation
reply_by_email_enableddésactivé, nous ne voulons pas que les utilisateurs répondent par e-mail- une catégorie réservée aux administrateurs pour les notifications provenant d’un système externe
- la catégorie dispose d’une adresse e-mail configurée
email_inest activé- les e-mails sont envoyés à l’adresse e-mail de la catégorie
- les e-mails rebondissent avec l’erreur
BadDestinationAddress
La cause
Après une heure de débogage, je suis tombé sur le commit suivant FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub
CORRECTION : Interdire les réponses aux catégories lorsque la réponse par e-mail est désactivée (#33641)
Lorsque le paramètre
reply_by_email_enabledest défini sur false, nous n’incluons plus de lien de réponse dans les notifications par e-mail. Cependant, nous n’empêchons pas les e-mails réels d’être envoyés à une adresseemail_inconfigurée associée à une catégorie. Ce changement prend en compte le paramètre dansEmail::Receiver#check_address.
et le code concerné ne retournera plus une catégorie si reply_by_email_enabled n’est pas activé.
def self.check_address(address, include_verp = false)
# vérifier uniquement un groupe/catégorie lorsque 'email_in' est activé
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? <-- ajouté
end
Pourquoi ? 
J’ai tellement de questions :
- pourquoi ce changement ? Pourquoi le faire ? Cela rend le système moins flexible. Si je ne veux pas que les gens envoient des e-mails à une catégorie, je supprimerais simplement l’adresse e-mail de la catégorie ?
- pourquoi est-ce implémenté de cette façon ?
- apparemment, l’envoi d’e-mails à des groupes n’est pas un problème ?
- si
reply_by_email_enabledest faux, il n’est même pas nécessaire de rechercher la catégorie ? - en ne retournant pas la catégorie, l’erreur devient
BadDestinationAddress, ce qui est TRÈS incorrect et VRAIMENT difficile à déboguer
- le paramètre sur lequel cela dépend soudainement s’appelle réponse par e-mail. Ce n’est pas ce que je fais.
- la même confusion est visible dans le titre de la PR, intitulé “interdire les réponses aux catégories”, ce qui n’est pas ce dont il s’agit (dans Discourse, une “réponse à une catégorie” n’est même pas possible).
Outre la manière dont cela a été implémenté, je ne vois honnêtement pas l’intérêt.
Je ne peux imaginer AUCUNE situation où la simple suppression de l’adresse e-mail de la catégorie ne suffirait pas si l’on souhaite empêcher les gens d’envoyer des e-mails à une catégorie. Et l’implication est qu’il est désormais impossible d’avoir une catégorie recevant des e-mails sans activer la réponse par e-mail à l’échelle du site.
S’il y a une bonne raison que je manque, n’hésitez pas à recatégoriser cela comme Contribute > Feature