您的位置: 西安视窗 > 财经 > 正文

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

2021-03-04 12:28:31来源:阅读:-

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

推荐阅读:天津之窗网

滚动推荐
28:31SpringBoot开发中mail
前一段时间做过一个邮件发送的服务,以前大体都测试过,文本、图片、附件都[详细]
12:48小米终于醒悟:MIUI12采用大量
今天,小米公司发布了MIUI12这个新型UI,整场发布会我是看完的,与[详细]
47:06你身边的圈子,决定你的未来
不知你是否发现:通常我们身边有什么样的人,我们就会变成什么样的人。比如[详细]
51:26武汉地区小米之家暂停营业!
今天下午,武汉小米之家发布公告,称为配合防治防疫工作,我们对武汉地区服[详细]
10:47三星5000mAh超大电池机器将至
三星智能手机系列众多,这也是三星在全球市场获得巨大销量的原因之一;近日[详细]
53:12杨哥带你一起了解苹果手机拨号键那些
对于菜单含义做简单解释:Siminfo卡信息connnected mo[详细]
23:31手机屏多大尺寸最理想?调查结果你想
最近全球著名的市场研究机构SA的一份调查报告显示,4.7寸屏幕的手机是[详细]