使用javax getFileName通过具有奇怪文件名的outlook附件

时间:2017-04-05 07:56:37

标签: java outlook multipart outlook-web-app javax

我正在使用javax从电子邮件中获取附件。 我的代码在这里:

String disposition = part.getDisposition();
if (disposition != null &&
    (disposition.equalsIgnoreCase(Part.ATTACHMENT) || disposition.equalsIgnoreCase(Part.INLINE))) {
    log.debug("Found attachment: " + part.getFileName());
}

它运作良好。但是,当Outlook Webmail发送电子邮件时,名称中带有拉丁字母的附件,则part.getFileName()例如对于附件“Riunione_del_venerdì.pdf”返回给我“=?iso-8859-1?Q?Riunione_del_venerd = EC_20170303.pdf?=”并且我无法获得正确的名称

如何获取真实的文件名?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

过了一段时间,我自己找到了一个解决方案。 从javax.mail.internet我可以使用:

String filename = part.getFileName();
String decodedFilename = MimeUtility.decodeText(filename);

可能只是在文件名以“=?”开头时才这样做并以“?=”

结尾