提问人:Merc 提问时间:10/22/2014 更新时间:9/6/2019 访问量:10269
如何在 Web 应用程序中显示 HTML 电子邮件?
How to display an HTML email in a web application?
问:
我编写了一个通过IMAP获取电子邮件的Web应用程序。我现在需要向用户显示这些电子邮件。 我以为这很简单(我在支持 HTML 的浏览器中显示 HTML),直到我稍微研究了一下......并发现存在大量问题,例如:
- Javascript & 安全性
- 打破风格
- 当然更多
有没有一种好的、安全的方法来显示 HTML 电子邮件?我会错误地认为“安全”而不是“华丽”,即使我不想只显示电子邮件的文本版本(无论如何都不能保证在那里......
我意识到最明显的答案是“把所有东西都放在一个框架里”——真的是这样吗?它真的会起作用吗?
我正在使用 Node 服务器端,如果它有帮助......
答:
..最明显的答案是“把所有东西都放在一个框架里”......它真的会起作用吗?
是的,例如 Whiteout Networks GmbH 的 WHITEOUT。IO 在 /src/tpl/read.html 和 /src/js/controller/read-sandbox.js 中执行此操作。一些安全问题由 DOMPurify 处理
..有很多问题..有没有一个好的、安全的方法..?
我也知道名称为 EML 或 MHTML 的消息数据格式,因此寻找一个好的“XY 到 HTML 转换器”或“支持 XY 的 HTML5 文档查看器”可能会为您指出可用的结果(例如 GroupDocs.Viewer)
一些电子邮件客户端(例如 GMail)不使用 ,而是使用邮件解析器(例如 andris9/mailparser)和 HTML 解析器(例如 cheeriojs/cheerio)来提取 e-mail-safe-html 子集(参见 Stack Overflow:HTML 电子邮件设计有哪些准则?和 Stack Overflow:为 GMail 设置 html 电子邮件样式以获取一些示例)或使用 HTML 清理器(例如 Google 的 Caja, cure53/DOMPurify)并将代码直接嵌入到页面中。iframe
但这并不总是一件容易的事情,对于什么构成 e-mail-safe-html 子集没有达成共识,您当然不会内联可能受感染的附件,也不会在受保护用户的会话中运行匿名 CORS 脚本。
无论如何,一如既往,研究各种电子邮件客户端的源代码(参见维基百科:电子邮件客户端的比较)是找出答案的方法。
评论