outlook html邮件样式不起作用,【总结】OUTLOOK2016邮件样式和inline图片兼容性等问题解决...

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引用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值