1

我已经查看了针对我的问题的其他一些建议,主要建议只是使用 iframe ...

然而!我不想使用 iframe。无论如何,关于这个问题:

从本质上讲,我正在为 PHP 的大学团队项目制作一个基于 Web 的电子邮件客户端,并且在 HTML 电子邮件方面遇到了一些问题......在最终正确处理电子邮件之后,我一直在查看几封电子邮件并遇到了一个和电子邮件的背景会影响网站正文标签的背景颜色...

我查看了原始邮件正文,它就像一个普通的 HTML 文件,电子邮件中的正文标签上有一些 CSS 样式(包括背景颜色),因此从某种意义上来说,电子邮件中的正文样式正在被应用到我页面的正文...

本质上,我需要知道的是,除了使用 iframe 来阻止代码影响包含消息正文的 div 之外的任何内容之外,是否还有其他方法......

谢谢!

4

4 回答 4

1

我实际上已经弄清楚了这一点,这可能对其他人有帮助,所以!

我更深入地研究了gmail是如何做到的......他们实际上将body标签转换为div标签......

$body = str_replace(array("<body ","</body>"),array("<div ","</div>"),$body);

我还使用了一些正则表达式从电子邮件中删除了 head、html 和 doctype 部分,我仍在调查这样做的任何副作用,但到目前为止,通过我测试过的所有电子邮件,它没有受到任何影响!如果有人想要我正在使用的正则表达式,请在此处评论...

它可能不是最优雅的解决方案,但它似乎有效!

于 2012-04-08T13:54:15.433 回答
0

我会说不——或者没有好办法。我刚刚检查了雅虎邮件,他们也在使用 iframe 来处理电子邮件。我想他们有更多的时间来考虑它:-)

于 2012-04-07T20:43:16.913 回答
0

本质上,我需要知道的是,除了使用 iframe 来阻止代码影响包含消息正文的 div 之外的任何内容之外,是否还有其他方法......

当然,您可以使用 javascript 编写自己的 HTML 解析器,将输出呈现到画布上(例如htmlcanvas)。好吧,如果你有太多时间;)

实际上 iframe 对我来说看起来更实用。否则将 HTML 电子邮件转换为纯文本电子邮件。这些很容易显示(您可以提供在新选项卡中显示 HTML 内容)。

于 2012-04-07T20:45:28.007 回答
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();

希望这会有所帮助......祝你好运

于 2012-04-08T17:08:35.817 回答