Análisis de correos electrónicos de texto sin formato desde contenido HTML (ASP.NET)
Pregunta
Bien, en resumen, básicamente ya tenemos un sistema en el lugar donde se genera el contenido HTML para los correos electrónicos. No es perfecto, pero funciona.
De esto, necesitamos poder derivar una alternativa de texto sin formato para el correo electrónico. Estaba pensando en saltar instantáneamente y crear un RegEx para quitar las etiquetas <*>
del mensaje, pero luego me di cuenta de que esto no sería bueno porque necesitamos algo de la información de formato (párrafos, saltos de línea, imágenes etc).
NOTA: estoy de acuerdo con enviar el correo y configurar vistas alternativas, etc., esto es solo para obtener texto sin formato de HTML.
Entonces, estoy reflexionando sobre algunas ideas. Publicaré uno como respuesta para ver qué piensan ustedes, pero pensé que lo abriría al piso. :)
Si necesita más aclaraciones, grite.
Muchas gracias
Rob
Solución
Mi solución
OK, ¡así que aquí está! ¡Pensé en una solución a mi problema y funciona de maravilla!
Ahora, estos son algunos de los objetivos que quería establecer:
- Todo el contenido de los correos electrónicos debe permanecer en las páginas ASPX (como lo hace actualmente el contenido HTML).
- No quería que el código del cliente hiciera nada más que decir "
SendMail("PageX.aspx")
" ;. - No quería escribir demasiado código.
- Quería mantener el código lo más semánticamente correcto posible (¡no REALMENTE hacks locos!
El proceso
Entonces, esto es lo que terminé haciendo:
- Vaya a la página maestra para ver los mensajes de correo electrónico. Cree un ASP.NET Control MultiView . Este control tendría dos vistas: HTML y Texto sin formato.
- Dentro de cada vista, agregué marcadores de posición de contenido para el contenido real.
- Luego tomé todo el código ASPX existente (como encabezado y pie de página) y lo pegué en la Vista HTML. Todo, DocType y todo. Esto hace que VS se queje un poco. Ignórelo.
- Luego, por supuesto, agregué nuevo contenido a la vista de Texto sin formato para replicar mejor la vista HTML en un entorno de Texto sin formato.
- Luego agregué un código al Maestro
Page_Load
, comprobando el parámetro QueryString " escriba " que podría ser " html " o " texto " ;. Se cae a & Quot; texto & Quot; Si no hay ninguno presente. Dependiendo del valor, cambia la vista. - Luego voy a las páginas de contenido y agrego nuevos marcadores de posición para los equivalentes de Texto sin formato y agrego texto según sea necesario.
- Para hacer mi vida más fácil, luego sobrecargué mi método
SendMail
para obtener la respuesta para la página requerida, pasando "type=html
" y "type=text
" y crear AlternateView según corresponda.
En resumen
Entonces, en resumen:
- Las Vistas separan el " views " del contenido (HTML y texto).
- Una página maestra cambia automáticamente la vista según una QueryString.
- Las páginas de contenido son responsables de cómo se ven sus vistas.
¡Trabajo hecho!
Si algo de esto no está claro, grite. Me gustaría crear una publicación de blog sobre esto en algún momento con más detalle.
Otros consejos
Mi idea
Cree una página basada en el contenido HTML y recorra el árbol de control. Luego puede elegir el texto de los controles y manejar diferentes controles según sea necesario (por ejemplo, use texto ALT para imágenes, & Quot; _____ & Quot; para HR, etc.).
Puede asegurarse de que el correo HTML esté en formato XHTML para poder analizarlo fácilmente con las herramientas XML estándar y luego crear su propio serializador DOM que genere texto sin formato. Todavía sería mucho trabajo cubrir XHTML general, pero para un subconjunto limitado que planea usar en el correo electrónico podría funcionar.
Alternativamente, si no le importa cambiar a otro programa, puede usar el interruptor -dump para el navegador web lynx.