2014-10-22 6 views
6

Ich schrieb eine Webanwendung, die E-Mails über IMAP abruft. Ich muss jetzt Anzeige diese E-Mails an den Benutzer. Ich dachte, es wäre einfach (ich HTML innerhalb eines HTML-fähigen Browser bin Anzeige), bis ich in diesen ein wenig aussehen ... und entdecken, dass es Tonnen von Fragen wie:Wie wird eine HTML-E-Mail in einer Webanwendung angezeigt?

  • Javascript & Sicherheit
  • Stil brechen
  • Sicherlich mehr

gibt es eine gute, sicher Möglichkeit, eine HTML-E-Mail anzuzeigen? Ich würde irren für "sicher" statt "gorgeous", auch wenn ich nicht nur die Textversion einer E-Mail anzeigen möchte (die nicht einmal garantiert da ist ...)

Ich realisiere die Die naheliegendste Antwort lautet: "Setze alles in einen Rahmen" - ist es das wirklich? Wird es tatsächlich arbeiten?

I Node Server-Seite verwendet, wenn es ...

Antwort

6

..most offensichtliche Antwort hilft "alles in einem Rahmen setzt" wird ... es wird tatsächlich Arbeit?

Ja, z.B. Whiteout Networks GmbH's WHITEOUT.IO tut es in /src/tpl/read.html und /src/js/controller/read-sandbox.js. Einige der Sicherheitsfragen behandelt werden durch DOMPurify

..there sind Tonnen issues..Is ein gute, sicher Weg ..?

Ich weiß, dass das Nachricht Datenformat auch unter Namen EML oder MHTML so die Suche nach einem gut „XY zu HTML-Konverter“ oder „HTML5-Dokument-Viewer mit XY-Unterstützung“ können Sie auf ein brauchbaren Ergebnisse zeigen (zB GroupDocs.Viewer)

Einig E-Mail-Clients (zB GMail) nicht iframe verwenden, anstatt sie einen E-Mail-Parser verwenden (zB andris9/mailparser) und einen HTML-Parser (zB cheeriojs/cheerio) eine E-Mail-safe-html Teilmenge zu extrahieren (für einige Beispiele siehe Stack Overflow: What guidelines for HTML email design are there? und oder verwenden Sie eine HTML sanitizer (zB Google's Caja, cure53/DOMPurify) und betten Sie den Code direkt in die Seite ein.

Aber es ist nicht immer eine einfache Sache, gibt es keinen Konsens darüber, was die Teilmenge E-Mail-safe-html darstellt und Sie sicherlich gewohnt nicht möglicherweise infizierte Anhänge Inline noch anonyme CORS Skripte innerhalb des secured Benutzers laufen Session.

Wie auch immer, wie immer, Quellcode von verschiedenem E-Mail-Clients zu studieren (siehe Wikipedia: Comparison of email clients) ist der Weg, um herauszufinden ..

+2

die Antwort akzeptieren, solange es erwähnt Googles Caja https: // Code. Google.com/p/google-caja/wiki/JsHtmlSanitizer das war der Schlüssel zur Lösung meines Problems – Merc

+0

@Merc in diesem Fall können Sie Ihre eigenen http://StackOverflow.com/Help/self-answer und Upvote meins akzeptieren, wenn es bringt etwas Nützliches – xmojmr

+0

Ihre Antwort ist erstaunlich und ich denke, es sollte die akzeptierte sein! Bitte fügen Sie einfach eine kurze Referenz zu Caja, das ist alles! – Merc