【问题标题】:How to display an HTML email in a web application?如何在 Web 应用程序中显示 HTML 电子邮件?
【发布时间】:2014-12-17 10:46:19
【问题描述】:

我编写了一个通过 IMAP 获取电子邮件的 Web 应用程序。我现在需要向用户显示这些电子邮件。 我认为这很简单(我在支持 HTML 的浏览器中显示 HTML),直到我稍微研究了一下……并发现存在 tons 的问题,例如:

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

有没有一种安全的方式来显示 HTML 电子邮件?我宁愿选择“安全”而不是“华丽”,即使我不想只显示电子邮件的文本版本(无论如何也不保证会出现...)

我意识到最明显的答案是“把所有东西都放在一个框架中”——真的是这样吗?它真的会起作用吗?

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

【问题讨论】:

    标签: javascript html email mime


    【解决方案1】:

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

    是的,例如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)并将代码直接嵌入到页面中。

    但这并不总是一件容易的事情,对于什么构成 e-mail-safe-html 子集没有达成共识,您当然不会内联可能受感染的附件,也不会在 @ 中运行匿名 CORS 脚本987654336@用户会话。

    不管怎样,和往常一样,研究各种电子邮件客户端的源代码(见Wikipedia: Comparison of email clients)是找出答案的方法..

    【讨论】:

    • 只要提到谷歌的 Caja code.google.com/p/google-caja/wiki/JsHtmlSanitizer 就接受答案,这是解决我的问题的关键
    • 你的回答太棒了,我认为它应该是被接受的!请添加对 caja 的快速引用,仅此而已!
    • @Merce 完成。不过,如果您已经知道答案是什么,以及在您的应用程序中什么对您真正有用,那么发布一个实用的自我答案可能对未来的读者有用
    • Google Caja 编译器项目现已移至此处:developers.google.com/caja
    猜你喜欢
    • 2011-11-12
    • 2021-08-14
    • 2011-08-27
    • 2013-11-18
    • 2011-02-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多