【总结】OUTLOOK2016邮件样式和inline图片兼容性等问题解决

Div布局不支持

outlook客户端很多都不支持div布局。应该全部换成table布局。

line-height不生效

解决方案

  • mso-line-height-rule: exactly;

  • 在空的单元格中加入空格HTML转义符: 

例如一个水平带颜色的条:

<td height="3"
          width="100%"
          style="mso-line-height-rule: exactly; line-height: 3px; background-color: #1890ff;"
        >&nbsp;</td>

如果没有加&nbsp;则蓝色高度会无效

inline图片不显示,或者显示为红叉

解决方案
https://support.microsoft.com/en-us/help/2779191/inline-images-may-display-as-a-red-x-in-outlook
对于Microsoft Outlook 2016和2013:
该问题的原因:如果未设置以下注册表值,或者不存在以下注册表值:

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等客户端是无法显示的。

<img width="45px" height="45px" src="data:image/png;base64,iVBORSLANKKA...."/>

解决方案:
替换成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("<" + cid + ">");
filePart.setDisposition(MimeBodyPart.INLINE);
item.attr("src", "cid:"+ cid);
mainPart.addBodyPart(filePart);

则邮件中的BASE64编码可以转换成PreencodedMimeBodyPart,作为INLINE的附件,通过Cid引用。

posted @   一杯半盏  阅读(1879)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示