0

我正在尝试在 HTML 电子邮件模板中使用两个条件语句。这些语句正在测试 MS Outlook 客户端,如果为 true,它将呈现图像,否则它将命中下一条语句以测试客户端是否不是 MS Outlook,然后呈现一些单独的 HTML。

<!--[if mso]> ... <!--<![endif]--> <!--[if !mso]><!-- --> ... <!--<![endif]-->

这适用于大多数 Outlook 桌面客户端,但 Outlook 2003、2011 和 2016 (mac) 似乎忽略了该if mso声明。我在这里遇到的另一个问题是 Outlook.com 似乎也无法识别此声明。

我想知道过去是否有其他人遇到过这个问题,如果有,他们的解决方案是什么?我以为该if mso声明会获取任何形式的 Outlook 客户端,但我的假设似乎是错误的。

任何帮助,将不胜感激 :)

干杯!

4

2 回答 2

1

Outlook for Mac(至少是 2016 版)使用 Webkit 来呈现内容,而不是大多数 Windows 版本的 Outlook 使用的 MS Word 引擎。这里的好消息是,你不需要跳过那么多的圈子来让它“正确地”渲染事物。坏消息是,这就是[if mso]在这里不起作用的原因。

Outlook.com 似乎去除了所有条件,这就是为什么您在那里也看不到图像的原因。

可能不是您想要的新闻,但希望它有所帮助。

于 2017-01-27T17:42:20.237 回答
0

这就是我使用的:

在 html 类型中:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

在 CSS 中:

#outlook a{
        padding:0;
    }
    .ReadMsgBody{
        width:100%;
    }
    body{
        width:100% !important;
        min-width:100%;
        -webkit-text-size-adjust:100%;
        -ms-text-size-adjust:100%;
    }
    .ExternalClass{
        width:100%;
    }
    td{
        border-collapse:collapse !important;
    }
    v*{
        behavior:url(#default#VML);
        display:inline-block;
    }
    .ExternalClass,.ExternalClass p,.ExternalClass span,.ExternalClass font,.ExternalClass td,.ExternalClass div{
        line-height:100%;
    }

并在我使用的 html 的 BODY 中包装任何条件规则:

 <!--[if gte mso 9]>
    <v:rect xmlns:v="urn:schemas-microsoft-com:vml" SOME OTHER RULES">
    <v:textbox inset="0,0,0,0">
    <![endif]-->

    <table>Some other HTML elements</table>

<!--[if gte mso 9]>
    </v:textbox>
    </v:rect>
<![endif]-->
于 2017-01-30T23:28:25.840 回答