我已经查看了一些针对我的问题的其他建议,主要建议只是使用iframe ......
然而!我不想使用iframe。无论如何,在这个问题上:
基本上,我正在为PHP的大学团队项目制作一个基于Web的电子邮件客户端,并且我在使用HTML电子邮件时遇到了一些问题...在最终正确处理电子邮件之后我一直在查看一些电子邮件并且遇到过一个和电子邮件的背景影响了网站身体标签上的背景颜色...
我看了一下原始的邮件正文,它就像一个普通的HTML文件,电子邮件中的正文标签上有一些CSS样式(包括背景颜色),所以从某种程度上来自电子邮件的正文样式正在应用于我的页面正文......
基本上,我需要知道的是除了使用iframe之外还有什么方法可以阻止代码影响包含消息体的div之外的任何内容......
谢谢!
答案 0 :(得分:1)
我实际上已经想到了这一点,这可能对其他人有帮助,所以!
我更深入地了解了gmail是如何做到的......他们实际上将body标签转换为div标签......
$body = str_replace(array("<body ","</body>"),array("<div ","</div>"),$body);
我还使用了一些正则表达式来删除电子邮件中的head,html和doctype部分,我仍然在考虑这样做的任何副作用,但到目前为止,通过我测试过的所有电子邮件都没有受到影响什么!如果有人想要我正在使用的正则表达式,只需在这里评论......
它可能不是最优雅的解决方案,但似乎有效!
答案 1 :(得分:0)
我会说不 - 或者没有好办法。我刚检查了雅虎邮件,他们也在使用iframe来发送电子邮件。我猜他们有更多时间考虑它: - )
答案 2 :(得分:0)
基本上,我需要知道的是除了使用iframe之外还有什么方法可以阻止代码影响包含消息体的div之外的任何内容......
当然,您可以使用javascript编写自己的HTML解析器,将输出呈现到画布上(例如htmlcanvas)。好吧,如果你有太多时间;)
实际上,iframe看起来对我来说更实用。否则将HTML电子邮件转换为纯文本电子邮件。这些很容易显示(您可以在新标签中显示HTML内容)。
答案 3 :(得分:0)
这是一个非常有趣的问题我真的想到它,实际上我认为我们可以使用javascript解决它如下:
<html>
<head></head>
<body>
<div id='email'>
<!--here we the HTML code of the new page should be placed-->
</div>
</body>
</html>
如果我们要放置的代码是相同的代码
<html>
<head></head>
<body>
Hi it's me
</body>
</html>
然后我们可以在电子邮件中获取代码并删除HTML标签和head,body标签:
var email = document.getElementById('email').innerHTML();
希望这有用...祝你好运