Java+Velocity模板发邮件:Outlook多余换行问题求助
解决Outlook邮件渲染的多余换行及宽度失效问题
清理模板中的多余空白与换行
Outlook的HTML渲染引擎基于Word,会把模板里不必要的换行、缩进空白解析成额外换行。直接压缩Velocity模板中的HTML代码,去掉标签间的多余换行和空格;也可以用Velocity的#strip指令包裹模板内容,自动清除不必要的空白。用HTML原生属性替代CSS样式
Outlook对CSS支持极其有限,比如宽度设置要直接用HTML的width属性而非CSS的style="width:xxx"。示例:<table width="600" cellpadding="0" cellspacing="0" border="0">所有样式尽量采用inline方式写在标签内,避免使用内部
<style>块或外部样式表。强制文本连续渲染
对容易出现换行的文本块,使用<td nowrap>属性,或者在标签内添加style="white-space: nowrap;"(nowrap属性在Outlook中兼容性更好);同时确保文本内容不要拆分成多行写在模板里,保持连续的文本块。全部使用表格布局
放弃div布局,用嵌套表格构建整个邮件结构。Outlook对table的渲染兼容性远高于div,所有内容都放在table单元格内,能最大程度避免布局错乱。检查邮件发送的编码与换行符
确保Java发送邮件时使用UTF-8编码,同时避免将模板中的换行符自动转换为Windows风格的CRLF(可通过Velocity模板的输出控制,或在Java代码中处理文本输出时去掉多余换行)。
内容的提问来源于stack exchange,提问作者Adel
相关产品推荐
相关产品推荐

