3

我在这里和其他地方看到了一种推荐的方法来设置条件评论以与 Outlook.com 一起使用,但由于下面详述的另一个已知问题,我收到了空白电子邮件。参考下面的两个代码示例,我想看看是否有人有解决此问题的可靠方法。

第一个例子:

<!--[if mso]><!-- --> 
<style type="text/css">


#learn-left { width: 350px; max-width: 350px; }
#learn-right { width: 165px; max-width: 165px; }


</style>
<!--<![endif]--> 

上面的代码会导致 Outlook.com 中出现空白屏幕,即使此处的其他帖子引用了<!--[if mso]><!-- -->适用于 Outlook.com 的内容。我知道在评论中有任何 HTML 标记存在任何问题,但如果条件与style标记一起放置,它也不起作用。奇怪的是,下面的代码似乎在一定程度上起作用。

<!--[if mso]><!-- --> 
<style type="text/css">


#learn-left { width: 350px; max-width: 350px; }
#learn-right { width: 165px; max-width: 165px; }


</style>
<![endif]--> 

我还应该注意我拥有此代码的原因是为了兼容 Outlook 2000 和 2003,因此我不能使用媒体查询作为替代解决方案。

4

4 回答 4

5

那些说你可以做到的网站是错误的。Outlook.com 会吃掉您的条件注释以及其中的任何内容。让我头疼了一阵子。

对于需要使用条件注释的事情,我发现最好的办法是拥有常规的条件注释部分,但还包括另一个表格行/列或者你有什么像class="outlookcom"(在td)这样的类并隐藏它display:none. 然后,在您的标签中,您可以使用(outlook 将“ecx”添加到所有分类标签中)<style>定位该隐藏行,并使用它为 outlook.com 显示它ecxoutlookcomdisplay:block !important

于 2013-09-23T13:49:06.723 回答
3

我试过这个,但它对我不起作用。它在屏幕上显示杂散的评论标签。

<!--[if !gt mso 9]><!-- -->
/* css here */
<!--<![endif]-->
<!--[endif]-->

这对我有用。我在酸的电子邮件上对其进行了测试。似乎工作完美。

<![if !mso]> 

<div>
This shows on all clients but not outlook 2007, 2010, 2013.
Works fine on outlook.com.
</div>

<![endif]>

<!--[if gte mso 9]>

<div>
This only shows on outlook 2007, 2010, 2013
</div>

<![endif]-->

我想了解更多信息,请尝试搜索“microsoft 下层显示条件评论”

于 2014-05-20T14:20:16.490 回答
2

我不知道使用 CSS 隐藏/显示是否是最佳途径,因为并非所有电子邮件客户端都会处理/尊重该 CSS(我在 Outlook Windows 客户端中测试了一个版本,但它没有工作)。我认为 Outlook.com 使用条件分支的原因是人们使用的语法略有偏差。当我更正我的语法时,代码在 Outlook.com 和 Outlook Windows 客户端中都正确呈现。我还尝试了 iphone Outlook 应用程序、iphone 内置电子邮件应用程序和 icloud (web),并且代码正确呈现。

需要注意的一件事是,如果您在 IIS 上使用 razor 脚本,请确保将 if !mso 包装在元素中,以便 IIS 知道不将其作为 razor 脚本处理。这是我的代码片段:

<!--[if mso]>code to render in the Outlook client<![endif]-->
<text><!if !mso]>code to render in Outlook.com<![endif]></text>
于 2015-02-27T15:49:20.673 回答
1

感谢 OP 中给出的提示,我刚刚发现了“空白 Outlook.com”问题的潜在解决方法:双尾评论。

而不是这个:

<!--[if !gt mso 9]><!-- --> /* css here */ <!--<![endif]-->

尝试这个

<!--[if !gt mso 9]><!-- --> /* css here */ <!--<![endif]--> <!--[endif]-->

似乎大多数 Web 客户端会忽略最后的结束评论(毕竟它仍然是一个有效的评论块),但 Outlook.com 不会,因此您会让所有电子邮件客户端都注意到评论部分并在对于outlook.com,这意味着没有空白电子邮件。显然要谨慎使用,但从我通过 Litmus 进行的有限测试来看,它看起来工作得很好。

于 2014-03-21T11:30:47.280 回答