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

2021年03月04日 15:13:55   [来源:互联网]   [阅读:-]
字体:【

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

推荐阅读:完美潮流


相关新闻
新闻焦点
初见本作时,像素画风下一身铁甲的主角立马让我联想到曾经大火的《铲子骑士(Shovel Knight)》。不过本作的玩法与《铲子骑士》大相径庭,它[更多]
Shadow Tactics(影子战术)是一款以江户时期的日本为背景,硬核的策略性潜入类游戏,采用了经典的盟军敢死队玩法,玩家将指挥5人组成的团[更多]
恐怖游戏《港诡实录》将在今日(1月6日)正式发售,发行商GameraGame日前公布了游戏具体发售时间和首发售价。本作是一款以香港都市传说为题材[更多]
我很惊讶于2019年的今天,能有那么一家不大的开发组,愿意去挑战人猿题材,《先祖:人类奥德赛》从诞生之初就注定与众不同。我对这款游戏的期待值是非[更多]
关于我们 | 联系我们 | XML地图 | 网站地图TXT | 版权声明
版权所有:福州汽车网未经授权禁止复制或建立镜像
相关作品的原创性、文中陈述文字以及内容数据庞杂本站无法一一核实,如果您发现本网站上有侵犯您的合法权益的内容,请联系我们,本网站将立即予以删除!
中国互联网违法和不良信息举报中心 网络警察报警岗亭