HTML邮件中MSO fallback字体代码放置位置及被移除问题咨询
关于HTML邮件中Outlook条件样式的位置及Direct Mail移除问题的解答
条件样式代码该放哪里?
首先明确:这段针对MSO(Outlook的Word渲染引擎)的条件样式必须放在<head>标签内部,而且建议放在你的主CSS样式块的后面。
原因如下:
- HTML邮件的
<head>是存放全局样式的标准位置,Outlook的MSO条件注释在这里能被精准识别和执行; - 放在主样式之后可以保证它能覆盖主样式里的字体设置——毕竟样式优先级是“后定义的覆盖先定义的”,这样Outlook就能乖乖用你指定的Arial字体,不会跳回默认的Times New Roman。
如果极端情况下<head>里的代码被工具篡改,你也可以试试把这段代码放在<body>的最开头,Outlook同样能识别,但<head>才是最优选择。
为什么Direct Mail for Mac会移除这段代码?
Direct Mail这类邮件工具经常会做“代码优化”,但有时候会帮倒忙,移除你的条件注释,常见原因有这几个:
- 误把功能性注释当普通注释清理:
<!--[if mso]>...<![endif]-->虽然是带条件的特殊注释,但有些工具的过滤规则会把所有<!-- -->包裹的内容都当成无用注释删掉; - 代码格式存在问题:你示例里的
type=”text/css”用的是中文双引号!这种非标准标点会让工具识别为无效代码,直接把整个块删掉。一定要换成英文双引号type="text/css"; - 工具的兼容性预设干扰:有些邮件工具会自动调整代码来适配某些客户端,结果误删了专为Outlook写的条件样式。
解决办法
给你几个实用方案:
- 修正代码格式:先把所有中文标点换成英文的,标准代码应该是这样的:
<!--[if mso]> <style type="text/css"> h1 { font-family: Arial, sans-serif; } </style> <![endif]--> - 检查工具设置:打开Direct Mail的偏好设置,看看有没有“保留HTML注释”“禁用代码自动优化”之类的选项,开启这些选项就能阻止工具删掉你的条件代码;
- 换导入方式:如果是复制粘贴代码进去的,试试把代码保存成纯HTML文件,再导入Direct Mail。很多工具对文件导入的代码过滤会更宽松;
- 退而求其次放
<body>里:如果<head>里死活留不住,就把这段代码放在<body>标签的最顶部,Outlook照样能识别并应用样式。
内容的提问来源于stack exchange,提问作者Markeee




