我正在尝试显示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>
答案 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
。