我使用codeigniter发送电子邮件...激活用户帐户后,它会发送另一封电子邮件以插入标记,但当用户收到该消息时,没有出现标记,但当我尝试使用其他元素(如或)时,它会呈现样式,但为什么没有?
$message = 'Congratulations! Use the script below to add your widget.<br>';
$message .= "<iframe frameborder=\"0\" src=\"<?=base_url() ?>business/widget/{$id}\" height=\"320px;\" width=\"480px\" style=\"border: 1px solid #ccc;\"></iframe>";
$this->email->message($message);
if($this->email->send())
{
other code....
}
2条答案
按热度按时间7ivaypg91#
Gmail和许多其他电子邮件客户端对您可以在HTML电子邮件中使用的HTML非常严格。
<iframe>
是严格禁止的,因为它可能会将用户暴露在他们不期望的网站上,并且另一端的网站可能会记录有关用户的信息(如他们的IP地址)。如果我是你,我会坚持使用超基本的HTML和CSS。把重点放在把信息传递给用户,并希望他们的客户端使信息看起来漂亮。总是提供一个链接,在其他地方查看完整的信息。
h9vpoimq2#
<iframe>
不能在大多数电子邮件客户端中使用-无论是在应用程序中还是作为网站使用。由于以下原因之一,它们被删除:<iframe>
可以用于钓鱼/恶意攻击,将恶意代码放入其他经过审查和安全的内容中(浏览器/客户端无法看到或扫描加载到iframe中的内容,它只是将其加载到DOM中)。另一种方法(YouTube所做的)是,他们没有在iframe中嵌入一些东西(在他们的例子中,是一个视频),而是在
<img>
或缩略图周围包裹一个<a>
,这给人的印象是你正在播放一个视频。当你点击它时,它所做的就是把你带到那个视频的URL。如果你想在邮件中添加大量的代码,你可以手动写入。但是这会产生其他影响,因为一些其他标签是有限的/样式对邮件来说是一个很大的麻烦。AFAIK一些HTML5元素也会从邮件中剥离。
正如Orangepill所说,Campaign Monitor已经做了跑腿和provided a chart showing where iframes can be used。他们还建议远离iframe。
一个没有提到的解决方案是有一个图像,在底部有一个链接,上面写着 * 在网页中查看此消息 *,这将把用户带到一个
<iframe>
工作的页面。