Solución de problemas de contenido omitido de correos electrónicos entrantes

Estoy investigando algunos publicaciones que tienen contenido omitido después de importar correos electrónicos de una lista de distribución. Algunos correos electrónicos envuelven los encabezados/secciones con líneas de “~~~~~~~~~~~~~~~~” y la primera aparición de eso en una línea propia, junto con todo lo que sigue, se omite en la publicación de Discourse.

Al inspeccionar el correo electrónico en la publicación, puedo ver el correo electrónico codificado en base64 original y, al cambiar a la pestaña de Texto, puedo ver que lo ha decodificado sin omitir nada.

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

Usando Rails, puedo ver que la columna raw se detiene inmediatamente antes de la primera “~~~~~~~~~~~~~~~~” y la columna cooked obviamente contiene lo mismo que raw, pero adecuado para HTML. He intentado cambiar algunas configuraciones relacionadas con el recorte de correos electrónicos, pero no estoy seguro de cómo probar si esos cambios marcan la diferencia.

Según mi comprensión, usar Reconstruir HTML en la publicación o emitir Post.find_by(id: 154678).rebake! en Rails tomará el contenido de raw y construirá el HTML, estableciendo cooked. No sé si tomará el contenido de raw_email y lo procesará nuevamente, por lo que no estoy seguro de cómo probar si los cambios de configuración están teniendo algún efecto.

¿Cómo debería indicarle a Discourse que reprocese raw_email de la publicación si rebake! no lo hace, para asegurarme de que estoy solucionando el problema correctamente?

Si tienes alguna idea sobre cómo evitar que se omita el contenido, por supuesto, también son bienvenidas.

Seguía buscando temas relacionados cuando tropecé con la función Prueba avanzada bajo Correos electrónicos en Administración. Sospechaba que esto era lo que causaba el problema, pero al usar esa función confirmé que es la configuración «Recortar correos electrónicos entrantes» la que lo provoca; se describe como «Recortar la parte de los correos electrónicos entrantes que no es relevante».

Con esa configuración desactivada, obtengo los resultados correctos para esos correos, pero «Rehacer» no parece reprocesar los correos electrónicos. Por lo tanto, la pregunta sigue siendo: ¿Cómo le digo a Discourse que reprocese las publicaciones a partir de sus correos electrónicos entrantes?

Al explorar el repositorio en busca de cualquier código relacionado con el procesamiento de correos electrónicos, finalmente encontré la tarea de rake posts:refresh_emails, que acepta un ID de tema opcional. Usando lo siguiente, como su nombre indica, se reprocesaron los correos electrónicos y también se volvieron a generar todos los mensajes del tema especificado.

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

Esto proporcionó los mensajes de ese tema sin recortar, como se esperaba, con la opción trim incoming emails desactivada. Esto reveló otro problema que debo resolver antes de poder continuar, pero eso no corresponde a este tema. Para actualizar todos los correos electrónicos en todos los temas, podré usar la tarea de rake de la siguiente manera.

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