0

我正在使用 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?=" 并且我无法获得正确的名称

我怎样才能得到真实的文件名?我怎样才能解决这个问题?

4

1 回答 1

0

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

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

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

于 2017-04-05T09:15:13.143 回答