2017-04-05 33 views
0

我使用javax从电子邮件中获取附件。 我的代码在这里:使用javax的奇怪文件名的Outlook附件getFileName

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

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

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

回答

0

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

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

也许只是这样做,只有当文件名开头并以“?=”结尾