在 javamail 中,我将 mail.mime.decodeparameter 设置为 true。我有如下附件的 Mimeheader。
Content-Type: image/png;
name*0*=ISO-2022-JP''%1B%24B%24%22%24%24%24%26%24%28%24*%24%22%24%24%24%26;
name*1*=%24%28%24*%24%22%24%24%24%26%24%28%24*%24%22%24%24%24%26%24%28;
name*2*=%24*%1B%28B.png
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename*0*=ISO-2022-JP''%1B%24B%24%22%24%24%24%26%24%28%24*%24%22%24%24;
filename*1*=%24%26%24%28%24*%24%22%24%24%24%26%24%28%24*%24%22%24%24%24;
filename*2*=%26%24%28%24*%1B%28B.png
使用 part.getFileName() 获取文件名时,文件名未正确呈现。文件名已呈现如下。
あいうえおあいう$&$($*$"$$$&$($*$"$$$&$($*.png
但实际的文件名是 あいうえおあいうえおあいうえおあいうえお.png 。
当我调试 javamail 的源时,在 decodeBytes() 方法中的 ParameterList.java 中,当编码字符串被拆分时,为值 pf 延续参数返回损坏的字符串。我认为当双字节字符集(例如 iso-2022-jp)被拆分时,它会在 javamail 中返回损坏的字符串。我是否正确?或者请建议我解决此问题的解决方法。