Div布局不支持
outlook客户端很多都不支持div布局。应该全部换成table布局。
line-height不生效
解决方案
mso-line-height-rule: exactly;
在空的单元格中加入空格HTML转义符:
例如一个水平带颜色的条:
width="100%"
style="mso-line-height-rule: exactly; line-height: 3px; background-color: #1890ff;"
>
如果没有加 则蓝色高度会无效
inline图片不显示,或者显示为红叉
HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Outlook\Options\Mail
DWORD Key :Send Pictures With Document
值:1
注意:x.0是占位符,需要根据版本选择正确的值:16.0 = Office 2016, 15.0 = Office 2013
Logo等图片不显示(二)
如果图片或者Logo是Inline的,例如base64编码的图片,在浏览器中是显示的,但是在Outlook 2016等客户端是无法显示的。
解决方案:
替换成inline附件:
String imgSrc = item.attr("src");
String dataType = StringUtils.substringBetween(imgSrc, "data:", ";base64,"); // extract data type (dataType = "image/png")
String base64EncodedFileContent = imgSrc.replaceFirst("data:.*;base64,", ""); // remove prefix from fileContent String (base64EncodedFileContent = "iVBORSLANKKA......etc"
MimeBodyPart filePart = new PreencodedMimeBodyPart("base64");
filePart.setContent(base64EncodedFileContent, dataType);
filePart.setFileName("attachImg"+ (++i) +"." + dataType.substring(dataType.lastIndexOf('/')));
IdGenerator idGenerator = new AlternativeJdkIdGenerator();
String cid = idGenerator.generateId().toString();
filePart.setContentID("");
filePart.setDisposition(MimeBodyPart.INLINE);
item.attr("src", "cid:"+ cid);
mainPart.addBodyPart(filePart);
则邮件中的BASE64编码可以转换成PreencodedMimeBodyPart,作为INLINE的附件,通过Cid引用。