您的位置: 池州在线 > 科技 > 正文

SpringBoot开发中mail中文附件乱码如何解决

2020-08-16 10:29:32来源:阅读:-

SpringBoot开发中mail中文附件乱码如何解决

前一段时间做过一个邮件发送的服务,以前大体都测试过,文本、图片、附件都是没有问题的,可有同事反应发送的附件名称有中文乱码,类似如下截图展示:

SpringBoot开发中mail中文附件乱码如何解决

咋一看不像乱码,抱着试试看的态度,为MimeMessageHelper硬性加了编码:

SpringBoot开发中mail中文附件乱码如何解决

并且对文件名称加了转码:

SpringBoot开发中mail中文附件乱码如何解决

但是,如果你跟进源码会发现spring已经为你做了转码工作,所以这个问题不存在的。

继续跟进MimeBodyPart类,发现setFileName方法中有个ParameterList类,点击继续跟进ParameterList类,里面的toString方法:

SpringBoot开发中mail中文附件乱码如何解决

上面这段代码的逻辑,大家应该可以很清晰的理解了吧,大家可以发现如果value.length() > 60 并且 splitLongParameters?哎,问题来了,splitLongParameters到底是个什么值,我们查找splitLongParameters,发现了其在类开头已经定义了

SpringBoot开发中mail中文附件乱码如何解决

大致意思就是,编码后的文件名长度如果大于60并且splitLongParameters的值为true,encodeParameters的值为true,文件名就会被截取,想想编码后的值被截取是什么样子?也只能是文章开头截图的显示了。

最终的解决方案就是,在发送的时候初始化splitLongParameters为false不截取:

SpringBoot开发中mail中文附件乱码如何解决

推荐阅读:银川热线

滚动推荐
29:32SpringBoot开发中mail
前一段时间做过一个邮件发送的服务,以前大体都测试过,文本、图片、附件都[详细]
00:49数码博主讽刺锤子图标天生骄傲 罗永
多转发,并且用歌词的方式幽默回应:没那么高大上,除了交互设计上的合理性[详细]
40:38Opera浏览器携3.6亿用户闯入
据悉,Opera目前在全球拥有3.6亿用户。目前可以在Google P[详细]
32:58SUGAR糖果手机科技美学空间:S
SUGAR糖果手机或许能给出答案。去年在线下市场突飞猛进的黑马——SU[详细]
13:47福特F150 安卓竖屏导航和360
福特F-150高端皮卡简单介绍如下。在安装了AdvanceTrac与R[详细]
03:11以用户体验为主:ZUK Z1手机简
提到ZUK手机相信大家都并不陌生,在本月的11号ZUK推出了旗下首款产[详细]
23:50iPhone手机的这些拍照技巧,让
作为在全世界范围里最受欢迎的拍照设备——iPhone,虽然它们的拍照性[详细]