如何在网页上显示HTML电子邮件以供预览?

时间:2010-03-18 21:55:57

标签: php html email

我正在尝试显示HTML电子邮件的“预览”。我在我的数据库中有HTML,现在我需要在iframe或弹出窗口或其他东西中呈现它。我试图将html注入页面上的div标签,但它不会显示任何内容。这是我遇到的问题(我有嵌套的HTML标签):

<html>
    <body>
        <h1>My page</h1>
        <div id="email-body">
            <html>
                <body>
                    <p>email</p>
                </body>
            </html>
        </div>
    </body>
</html>

3 个答案:

答案 0 :(得分:2)

您可以将HTML写入弹出窗口。

var preview = window.open("", /* options */);
preview.document.write(html);
preview.document.close();

但与我一样,很多人不喜欢弹出窗口。另一个考虑因素是仅显示 <body>内容。更好的是,大多数邮件客户端只支持它。如果内容类型为text/html,您可以发送HTML邮件,就像它将成为HTML <body>的一部分一样。

<p>email</p>

通过这种方式,您可以通过常规方式将其注入主页面中的某个div中进行预览。

如果您想设置元素样式,但不喜欢内联样式,则还可以添加<style>元素。大多数邮件客户端也只支持它。

<style>p { font-family: arial, sans-serif; }</style>
<p>email</p>

从HTML纯粹主义者看来,这确实在语法上无效。但它有效(也可以在网页浏览器中使用!)并且可以轻松地减少这些内容。

答案 1 :(得分:1)

假设标记看起来与您在帖子中显示的完全一样,您可以像这样剥离标记(从数据库中获取后在电子邮件字段中运行):
$email = preg_replace('/\<\/?(html|body)\>/', '', $email);

这将只留下电子邮件的正文内容。只要电子邮件在<html><body>之间没有任何内容,例如<head>部分,就会有效。

答案 2 :(得分:0)

这不起作用,因为文档中不能有两个HTML结构。

我能看到的唯一方法是使用iframe