Dépannage du contenu omis dans les e-mails entrants

Je suis en train d’examiner certains messages dont le contenu a été omis après l’importation d’e-mails provenant d’une liste de diffusion. Certains e-mails encadrent les titres ou les sections avec des lignes de « ~~~~~~~~~~~~~~~~~ », et la première occurrence de cette ligne seule, ainsi que tout ce qui suit, est omise du message Discourse.

En inspectant l’e-mail dans le message, je peux voir l’e-mail original encodé en base64. En passant à l’onglet Texte, je constate qu’il a été décodé sans aucune omission.

./launcher enter app
rails c
Post.find_by(id: 154678)
=> #<Post:0x000055b8da925e08
...

En utilisant Rails, je vois que la colonne raw s’arrête immédiatement avant la première ligne de « ~~~~~~~~~~~~~~~~~ », et la colonne cooked contient évidemment la même chose que raw, mais adaptée au format HTML. J’ai essayé de modifier certains paramètres liés au recadrage des e-mails, mais je ne sais pas comment tester si ces modifications ont un effet.

À ma connaissance, l’utilisation de « Rebuild HTML » sur le message ou l’exécution de Post.find_by(id: 154678).rebake! dans Rails permet de prendre le contenu de raw et de générer le HTML, en mettant à jour cooked. Cependant, je ne sais pas si cela prendra également le contenu de raw_email pour le traiter à nouveau, donc je ne suis pas certain de savoir comment vérifier si les paramètres modifiés ont un effet.

Comment puis-je demander à Discourse de retraiter raw_email du message si rebake! ne le fait pas, afin de m’assurer que je dépanne correctement ?

Si vous avez des idées sur la façon d’éviter que le contenu ne soit omis, elles sont bien sûr les bienvenues.

En continuant la recherche de sujets connexes, je suis tombé sur la fonctionnalité Test avancé dans la section Courriels de l’Administration. Je soupçonnais que c’était cela le coupable, et en utilisant cette fonctionnalité, j’ai confirmé que c’est le paramètre « Élaguer une partie des courriels entrants » qui cause ce problème, décrit comme « Élaguer la partie des courriels entrants qui n’est pas pertinente ».

Avec ce paramètre désactivé, j’obtiens les résultats corrects pour ces courriels, mais la réélaboration ne semble pas retraiter les courriels. La question demeure donc : comment demander à Discourse de retraiter les messages à partir de leurs courriels entrants ?

En fouillant dans le dépôt à la recherche de tout code gérant les e-mails, j’ai fini par trouver la tâche Rake posts:refresh_emails, qui accepte un identifiant de sujet en option. En utilisant la commande suivante, comme son nom l’indique, les e-mails ont été retraités et tous les messages du sujet spécifié ont également été régénérés.

cd /var/discourse
./launcher enter app
rake posts:refresh_emails['24961']

Cela a permis d’obtenir les messages de ce sujet non tronqués, comme prévu, avec l’option trim incoming emails désactivée. Cela a toutefois mis en lumière un autre problème que je dois résoudre avant de pouvoir continuer, mais cela ne concerne pas ce sujet. Pour rafraîchir tous les e-mails de tous les sujets, je pourrai utiliser la tâche Rake de la manière suivante.

cd /var/discourse
./launcher enter app
rake posts:refresh_emails