在电子邮件正文中使用youtube发送iframe

时间:2011-03-17 12:56:28

标签: php codeigniter

我想在电子邮件正文中发送一些html,但gmail不会使用youtube视频解释iframe标记。是因为安全违规还是其他原因?

这是我的代码:

    this->load->library('email');       
    $config['mailtype'] = 'html';
    $config['wordwrap'] = TRUE;
    $this->email->initialize($config);
        $this->email->from('<email>', 'Alega');
        $this->email->to('<email>'); 
        $this->email->subject('Email Test');
        $this->email->message('<iframe title="YouTube video player" width="480" height="390" src="<url>" frameborder="0" allowfullscreen></iframe>');   

            $this->email->send();

2 个答案:

答案 0 :(得分:7)

这是因为安全性,这也是你不能将javascript或除图像之外的任何外部信息放入电子邮件中的原因 - 它可以给电子邮件太多“权力”。 (你可以把东西放在那里,它不会显示)。遗憾的是,这意味着没有可靠的闪存支持。

事实上,由于缺乏支持,大多数电子邮件阅读器都不会解析简单的标签或CSS,我实际上只是为了确保电子邮件在所有不同的电子邮件客户端看起来一致而恢复到表格。

您最好/唯一的选择就是链接到我害怕的视频。如上所述,Gmail会解析Youtube链接,并实际将其嵌入启用它的用户。

答案 1 :(得分:0)

由于安全原因,许多电子邮件服务器都不允许这样做。但您可以尝试以下解决方案。

解决方案1:

$this->email->message('<&nbs;iframe title="YouTube video player" width="480" height="390" src="<url>" frameborder="0" allowfullscreen><&nbs;/iframe>');

解决方案2:

public static bool HasPrintToVerb(string filename)
{
    try
    {
        var ext = Path.GetExtension(filename);

        var value = Registry.GetValue("HKEY_CLASSES_ROOT\\" + ext, string.Empty, null);
        var printToValue = Registry.GetValue(string.Format(@"HKEY_CLASSES_ROOT\{0}\shell\Printto\command", value), string.Empty, null);
        return printToValue != null;
    }
    catch(Exception ex)
    {
        return false;
    }
}

但是,在解决方案2中,您需要通知接收方从标记中删除空格。