电子邮件客户端的条件运算符不起作用

时间:2019-05-20 01:51:16

标签: html outlook

我在html中有一个条件,该条件应显示特定的td,具体取决于它是通过Outlook桌面还是其他浏览器查看。

<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
            <tr>
                <!--[if !(mso)]>
                <td style="background-color: #4400c9; border-radius: 10px 10px 0px 0px;">
                <![endif]-->
                <!--[if mso]>
                    <td style="background: url('');">
                <![endif]-->
                    <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">

编辑: 这就是即时通讯的结果。 enter image description here

希望有人可以指出我的状况有什么问题。 谢谢。

1 个答案:

答案 0 :(得分:1)

我知道您正在尝试做什么。 需要注意的一件事是,该代码是Outlook特定的,因此您的!mso基本上是在告诉Outlook忽略它包装的代码,而不是在其他电子邮件客户端中显示。

此外,您的非Outlook条件语句应不带mso括号。 像这样:...[if !mso]...

您的!mso隐藏了回退,因此您需要对条件代码进行一些改动。您应该在!mso条件语句的开头和结尾处注意额外的<!--[if !mso]> <!----><!-- <![endif]-->
这样做是为了使非Outlook内容在所有其他电子邮件客户端中都不会显示注释,但同时又会将其隐藏在Outlook中。

这里有一些很好的资源可以帮助您掌握这种技术:
1-https://stackoverflow.design/email/base/mso
2-HTML Emails: fallback for mso conditional?
3-https://litmus.com/community/discussions/396-conditional-code-for-outlook

这是代码的外观:

<!-- ### RENDER EVERYWHERE ELSE ### -->
<!--[if !mso]> <!---->
  <td>Non Outlook</td>
<!-- <![endif]-->

<!-- ### RENDER IN OUTLOOK ONLY ### -->
<!--[if mso]>
  <td>Outlook only</td>
<![endif]-->