我正在编写一个网络邮件产品,一些电子邮件的正文 CSS 会改变背景......所以当我 Html.Decode() 那个电子邮件正文时,它会改变整个页面的 CSS。
有没有好办法来解决这个问题?
您可以使您的 CSS 比电子邮件的规则更具体。例如:
body.body
比.body
或更具体body
body.body 中任何与上面较小示例中的样式冲突的样式都将被覆盖。但是要阻止样式合并在一起,您需要定义每个样式。
或者,您可以重写电子邮件中的 CSS,这是当今大多数 webmail/桌面电子邮件客户端的方式,一种或另一种方式。例如,如果您#emailMessage
为所有规则添加前缀,并将电子邮件放在<div id="emailMessage"></div>
标签内,则电子邮件中的所有样式将仅适用于该命名空间内。
使用 iframe 显示电子邮件只会引入更多基于可访问性等问题。祝你好运。
您的问题的答案可能是“iframe”,但在您的具体情况下,编写一个网络邮件客户端将向您介绍一个美妙的新地狱,称为“从各种客户端生成的可能极其无效的 html 中剥离 css,这些客户端都有他们对电子邮件中应允许使用哪种 html 的想法”。
祝你好运!
一种常见的方法是使用 iframe,尽管我不确定这是否适用于您的问题。
基本上它在另一个页面中加载不同的 html 页面。这使它独立,但这确实意味着您有 2 个页面来显示一封电子邮件。