1

如何使用 python 使电子邮件中的 HTML 安全地显示在 Web 浏览器中?

显示时不应遵循任何外部引用。换句话说,所有显示的内容都应该来自电子邮件,而不是来自互联网。

除了垃圾邮件之外,还应尽可能地按照作者的意图显示。

我想避免自己编码。

需要最新浏览器 (firefox) 版本的解决方案也是可以接受的。

4

3 回答 3

1

html5lib包含一个 HTML+CSS sanitizer。它目前允许太多,但修改它以匹配用例应该不会太难。

从这里找到它。

于 2009-10-23T06:26:45.997 回答
1

我不太清楚您对“安全”的确切含义。这是一个相当大的话题......但是,它的价值:

在我看来,ActiveState Cookbook 中的剥离解析器是最简单的解决方案之一。您几乎可以复制/粘贴该类并开始使用它。

看看评论。最后一个声明它不再工作了,但我也在某个应用程序中运行它并且它工作正常。由于工作,我无法访问那个盒子,所以我必须在周末查看它。

于 2009-10-23T07:10:04.117 回答
0

使用 HTMLparser 模块,或安装 BeautifulSoup,并使用它们来解析 HTML 并禁用或删除标签。这将保留那里的任何链接文本,但不会突出显示并且不可点击,因为您正在使用 Web 浏览器组件显示它。

<A></A>您可以通过将 a 替换为a<SPAN></SPAN>并更改文本装饰以显示链接的位置来更清楚地了解所做的工作。可能是与正常不同的蓝色阴影和虚线下划线表示破损。这样你就更接近于按预期显示它,而不会误导人们点击不可点击的东西。您甚至可以在Javascript纯 CSS中添加一个悬停,它会弹出一个工具提示,说明出于安全原因已禁用链接。

类似的事情可以用<IMG></IMG>标签来完成,包括用空白矩形替换它们,以确保页面布局接近原始。

我用Beautiful Soup做过类似的事情,但是 HTMLparser 包含在 Python 中。在较旧的 Python 发行版中,有一个 htmllib 现在已弃用。由于电子邮件中的 HTML 可能不完全正确,请使用 Beautiful Soup 3.0.7a,它可以更好地理解损坏的 HTML。

于 2009-10-22T10:25:27.983 回答