咋一看不像乱码,抱着试试看的态度,为MimeMessageHelper硬性加了编码:
并且对文件名称加了转码:
但是,如果你跟进源码会创造spring已经为你做了转码事情,以是这个问题不存在的。

连续跟进MimeBodyPart类,创造setFileName方法中有个ParameterList类,点击连续跟进ParameterList类,里面的toString方法:
上面这段代码的逻辑,大家该当可以很清晰的理解了吧,大家可以创造如果value.length() > 60 并且 splitLongParameters?哎,问题来了,splitLongParameters到底是个什么值,我们查找splitLongParameters,创造了其在类开头已经定义了
大存问思便是,编码后的文件名长度如果大于60并且splitLongParameters的值为true,encodeParameters的值为true,文件名就会被截取,想想编码后的值被截取是什么样子?也只能是文章开头截图的显示了。
终极的办理方案便是,在发送的时候初始化splitLongParameters为false不截取: