我正在将 docx 转换为 html 格式(使用 apache poi)并将其作为电子邮件发送。
生成的 html 片段看起来像这样
<html>
<head>
....
<style>
span.Normal{
font-family: 'Arial';font-size: 9.0pt;
}
span.Title{
font-family: 'Cambria';font-size: 28.0pt;color: #000000;
}
span.MySubtitle{
font-family: 'Arial';font-size: 18.0pt;color: #000000;
}
span.MyTitle{
font-family: 'Arial';font-size: 22.0pt;font-weight: bold;color: #000000;
}
...
</style>
</head>
<body>
....
<p class="Normal Title MyTitle">
<span id="_GoBack">
<span class="Normal Title MyTitle">Welcome Message</span>
<span class="Normal Title MyTitle"> </span>
<span class="Normal Title MyTitle">Username</span>
</p>
<p class="Normal Title MySubtitle">
<span class="Normal Title MySubtitle">Issues and Solutions</span>
</p>
...
</body>
</html>
Outlook 客户端无法识别多个 css 类。它只渲染第一个 css 类“Normal”而忽略其余部分。但我的原始格式(在 docx 中)存在于“MyTitle”和“MySubTitle”类中。
Outlook 是否支持多个 css?有没有一种方法可以控制多个 css 生成。
最佳答案
我自己刚刚发现了这个问题。
看起来 Outlook 只采用 class
属性中列出的第一个类,忽略其他所有内容。
样式表:
<!--[if gte mso 9]>
<style type="text/css">
.red {
color: red;
}
.large {
font-size: 72px;
}
</style>
<![endif]-->
标记:
<div class="red">
THIS SHOULD BE RED IN OUTLOOK
</div>
<div class="large">
THIS SHOULD BE LARGE IN OUTLOOK
</div>
<div class="red large">
THIS SHOULD BE RED AND LARGE IN OUTLOOK
</div>
<div class="large red">
THIS SHOULD BE RED AND LARGE IN OUTLOOK
</div>
结果:
据我所知,所有版本的 Outlook 都受到影响。包括较新的。
我已经向 hteumeuleu/email-bugs
提交了一份错误报告,记录了这个怪癖:
关于css - 多个 css 类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39164497/