您的位置: 江西汽车网 > 行业 > 正文

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

2020-08-15 06:49:50来源:阅读:-

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中文附件乱码如何解决

推荐阅读:时尚传媒网

滚动推荐
49:50SpringBoot开发中mail
前一段时间做过一个邮件发送的服务,以前大体都测试过,文本、图片、附件都[详细]
38:04苹果 App Store 充值卡上
前段时间淘宝官方发布公告,宣称从2017年2月1日起,禁止在淘宝上发布[详细]
37:33高难度难以上手 那些玩家锲而不舍的
有些玩家玩游戏只是打发时间,一般玩一些入手容易的游戏,可是现在有那么一[详细]
01:04阅读APP-让阅读为生活着色
利用碎片化时间进行移动阅读已经成为网民主要的上网行为之一,。2、今日特[详细]
59:22华为终端服务热线新号码今日正式启用
如昨日预告,今日,华为终端服务热线新号码950800正式启用。与此同时[详细]
53:03价格太亮了!史上最模块化手机现身:
联想在今年6月份举办了techworld大会,正式推出了Moto Z系[详细]
52:10iPhone 6s最贴身的选择 超
触屏式智能手机的大规模普及,弥补其不足的各类保护膜、移动电源、保护外壳[详细]