2012-02-21 16 views
7

Sto costruendo uno script di casella di posta elettronica PHP.PHP che visualizza l'e-mail html in una pagina html

Come faccio a rendere le email html visualizzate in modo pulito come in gmail/hotmail.

Se l'ho appena emesso, influisce sull'intero layout di pagina.

Potrei usare iframe ma sicuramente non è la soluzione migliore.

+0

Gli iframe sono la soluzione PIÙ SEMPLICE, a meno che non si desideri ottenere una pugnalata per la riscrittura dinamica dei css all'interno delle e-mail in modo che non possa influenzare la pagina contenente. –

+1

Pensa alle dimensioni del team che crea gmail e hotmail e quanto spesso hanno bug e problemi e chiedi a te stesso se vuoi davvero seguire questa strada ...la "soluzione migliore" è usare una libreria o un plugin esistente. Qualcosa come http://www.afterlogic.org/webmail-lite potrebbe aiutarti. –

risposta

5

Come dichiarato da Marc B, credo che un IFrame sarebbe la soluzione migliore ... ma ti prego di capire che se scarichi qualsiasi codice HTML di posta elettronica rischi di esporsi a virus, trojan e codice HTML/JavaScript dannoso - Your aprendo la scatola di Pandora sul tuo computer a meno che non trovi un buon modo per sandbox/strip di quell'HTML.

Ecco un semplice Regex per pulire JavaScript almeno:

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

Quella regex pulisce solo i blocchi '

1

Creare un contenitore DIV a cui si assegna larghezza (e altezza se necessario) e assicurarsi di aggiungere una proprietà di overflow corrispondente al progetto. Questo dovrebbe impedire al tuo indirizzo email HTML di interferire con il tuo layout.

UPDATE

contenitore A DIV vi assicura comunque che è possibile limitare le dimensioni della casella di visualizzazione e con adeguata CSS agisce simile a un iframe senza tutto il bagaglio.

Se si è preoccupati per il codice nell'e-mail, strip_tags sembrerebbe una soluzione migliore rispetto alla regex. È possibile definire un elenco di tag da lasciare da soli ed essere comunque sicuri di spogliare il resto.

1

considerare l'uso di qualche biblioteca HTML Tidy (cioè .: PHP.Tidy).

È possibile passare il testo attraverso la libreria per ottenere un html ben formattato.

Una buona pratica sarebbe quella di definire un comportamento standard CSS per la maggior parte dei tag nel div che stai utilizzando.

3

Se stai cercando la "soluzione migliore", entra in contatto con un'altra libreria di e-mail open source che sta facendo la stessa cosa che sei. Mantenere un riproduttore di e-mail da solo che è sicuro contro l'iniezione di script e altri hack sarà semplicemente troppo lavoro per una persona.

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

altro: http://trac.roundcube.net/

È possibile ottenere il beneficio di altri sviluppatori che utilizzano la libreria mantenendo la base di codice, quindi se qualcosa è rotto, tutto quello che dovete fare è tirare l'ultimo aggiornamento (si spera) e si ottiene la correzione. Se trovi qualcosa che deve essere migliorato, puoi correggerlo o costruirlo e rendere il codice migliore per tutti. Sto solo inserendo qui le librerie open source, tuttavia in qualsiasi contesto commerciale, costruire il tuo renderer di e-mail senza una grande squadra, è una cattiva idea.