outlook使用javax getFileName创建的带有奇怪文件名的附件

ui7jx7zq  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(116)

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

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

而且效果很好。但是,当邮件是由Outlook webmail发送的,附件中有拉丁字母的名称,部分. getFileName()例如.为附件"Riunione_del_venerdì. pdf"返回给我"=?iso-8859 - 1?Q?Riunione_del_venerd = EC_20170303.pdf?="我无法得到正确的名称
我怎么才能得到真正的文件名?我该怎么解决这个问题呢?

t5fffqht

t5fffqht1#

过了一段时间,我自己找到了解决办法。从javax.mail.internet我可以用途:

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

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

kknvjkwl

kknvjkwl2#

完美的解决方案,不需要检查=?和?=难以置信,javax.mail中没有修复这个问题

相关问题