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

时间:2014-10-22 03:14:29

标签: javascript html email mime

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

  • Javascript&安全
  • 风格破坏
  • 当然更多

是否有良好的安全方式来显示HTML电子邮件?我会因为#34; safe"而不是"华丽",即使我不想只显示电子邮件的文本版本(甚至不保证在那里......)

我意识到最明显的答案是"把所有东西放在框架中#34; - 那是真的吗? 实际会工作吗?

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

1 个答案:

答案 0 :(得分:10)

  

..最明显的答案是"把所有内容都放在一个框架中" ......它实际是否有效?

是的,例如Whiteout Networks GmbH's 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子集(有关示例,请参阅Stack Overflow: What guidelines for HTML email design are there?Stack Overflow: Styling html email for GMail)或使用HTML sanitizer(例如Google's Cajacure53/DOMPurify)并将代码直接嵌入页面。

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

无论如何,一如既往,研究各种电子邮件客户端的源代码(参见Wikipedia: Comparison of email clients)是找出方法..