如何在Web应用程序中显示HTML电子邮件?

Mer*_*erc 11 html javascript email mime

我写了一个通过IMAP获取电子邮件的Web应用程序.我现在需要向用户显示这些电子邮件.我认为这很简单(我在支持HTML的浏览器中显示HTML),直到我对此进行了一些调查......并发现存在大量问题,例如:

  • Javascript和安全性
  • 风格破碎
  • 当然更多

有没有一种好的,安全的方式来显示HTML电子邮件?即使我不想只显示电子邮件的文本版本(甚至不保证在那里......),我也会因为"安全"而不是"华丽"而犯错.

我意识到最明显的答案是"把所有东西放在一个框架内" - 是不是真的呢?它真的有效吗?

如果有帮助,我正在使用Node服务器端...

xmo*_*jmr 10

最明显的答案是"把所有东西放在一个框架内"......它真的会起作用吗?

是的,例如Whiteout Networks GmbH的WHITEOUT.IO/src/tpl/read.html/src/js/controller/read-sandbox.js中执行此操作.一些安全问题由DOMPurify处理

..有很多问题..有一个好的,安全的方式..?

我知道消息数据格式也在名称EMLMHTML下,因此寻找一个好的 "XY到HTML转换器"或"支持XY的HTML5文档查看器"可能会指向一个可用的结果(例如GroupDocs.Viewer)

一些电子邮件客户端(例如GMail)不使用iframe,而是使用邮件解析器(例如andris9/mailparser)和HTML解析器(例如cheeriojs/cheerio)来提取电子邮件安全的html子集(请参阅堆栈)溢出:什么HTML电子邮件设计准则有哪些?堆栈溢出:风格化的HTML邮件的Gmail的一些例子)或使用HTML消毒剂(如谷歌的卡哈,cure53/DOMPurify),并直接嵌入代码到网页.

但这并不总是一件容易的事,对于什么构成电子邮件安全-html子集没有共识,你当然不会内联可能被感染的附件,也不会在安全用户的会话中运行匿名CORS脚本.

无论如何,一如既往,研究各种电子邮件客户端的源代码(参见维基百科:电子邮件客户端的比较)是找出...的方法.

  • 只要它提到谷歌的Caja https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer,这是解决我的问题的关键,它会接受答案 (2认同)
  • Google Caja 编译器项目现已移至此处:https://developers.google.com/caja/ (2认同)