2012-02-21 19 views
7

Estoy creando un script de buzón de correo PHP.PHP que muestra el correo electrónico html en una página html

¿Cómo puedo hacer que los correos electrónicos html se muestren limpiamente como lo hacen en gmail/hotmail.

Si acabo de hacer eco, afecta a todo el diseño de la página.

Podría usar iframes pero seguramente esa no es la mejor solución.

+0

Iframes es la solución MÁS SENCILLA, a menos que desee intentar una reescritura dinámica de css dentro de los correos electrónicos para que no pueda afectar a la página que lo contiene. –

+1

Piense un poco sobre el tamaño del equipo que crea gmail y hotmail, y con qué frecuencia tienen errores y problemas, y pregúntese si realmente quiere seguir por este camino ...la "mejor solución" es usar una biblioteca o un plugin existente. Algo como http://www.afterlogic.org/webmail-lite podría ayudarte. –

Respuesta

5

Como Marc B declaró, creo que un IFrame sería su mejor opción ... pero tenga en cuenta que si solo descarga cualquier código HTML de correo electrónico corre el riesgo de exponerse a virus, troyanos y código HTML/JavaScript malicioso - Su abrir la caja de Pandora en su computadora a menos que encuentre una buena manera de guardar/pelar ese HTML.

Aquí es una expresión regular sencilla de limpiar JavaScript al menos:

"(?s)<script.*?(/>|</script>)" 
+3

Esa expresión regular solo limpia los bloques '

1

Cree un contenedor DIV al que le asigne ancho (y alto si es necesario) a, y asegúrese de agregar una propiedad de desbordamiento que coincida con su diseño. Esto debería evitar que su correo electrónico HTML interfiera con su diseño.

ACTUALIZACIÓN

contenedor de un DIV todavía le aseguran que ahora podrá limitar el tamaño de la caja de presentación y con la adecuada CSS actúa de forma similar a un iframe sin todos los problemas.

Si le preocupa el código en el correo electrónico, strip_tags parecería una mejor solución que la expresión regular. Puede definir una lista de etiquetas para dejarlas en paz y aún así tener la confianza de despojar al resto.

1

considerar el uso de alguna biblioteca HTML Tidy (es decir .: PHP.Tidy).

Puede pasar el texto a través de la biblioteca para obtener un html bien formateado.

Una buena práctica sería definir un comportamiento estándar CSS para la mayoría de las etiquetas en el div que está utilizando.

3

Si está buscando la "mejor solución", suba a bordo con otra biblioteca de correo electrónico de código abierto que esté haciendo lo mismo que usted. Mantener un renderizador de correo electrónico seguro contra la inyección de scripts y otros hacks simplemente será demasiado trabajo para una persona.

Un ejemplo: https://github.com/afterlogic/webmail-lite

Otra: http://trac.roundcube.net/

Usted obtiene el beneficio de otros desarrolladores que utilizan la biblioteca de mantenimiento de la base de código, así que si algo se rompe, todo lo que tiene que hacer es tirar de la última actualiza (con suerte) y obtienes la solución. Si encuentra algo que necesita mejorar, puede arreglarlo o construirlo, y hacer que el código sea mejor para todos. Realmente estoy lanzando bibliotecas de código abierto aquí, sin embargo, en cualquier contexto comercial, construir tu propio procesador de correo electrónico sin un gran equipo, es una mala idea.

Cuestiones relacionadas