Javamail 获取一个额外的文件 关于下载附件

Javamail Getting one extra file On downloading attachments

我在下载附件时收到一个 File 类型的额外文件。我正在使用 MimeBodyPart.saveFile() 这是我的下载附件代码

for (MimeBodyPart mbp : msgToDownload.getAttachmentList()) {
     updateProgress(msgToDownload.getAttachmentList().indexOf(mbp),
     msgToDownload.getAttachmentList().size());
     mbp.saveFile(DOWNLOAD_LOCATION + mbp.getFileName());
 }

这里的msgToDownload是一个Class,它以Message msg为参数,加上一些其他参数。 getAttachmentList()MimeBodyPart 类型的列表,定义为 List<MimeBodyPart>
这就是我将附件添加到列表的方式

    sb.setLength(0);
        msgToRender.clearAttachments();
        Message msg = msgToRender.getMsgRef();
        try {
//            String messageType = msg.getContentType();

            sb.append(getText(msg));

            if (hasAttachments(msg)) {
                Multipart mp = (Multipart) msg.getContent();
                for (int i = mp.getCount() - 1; i >= 0; i--) {
                    BodyPart bp = mp.getBodyPart(i);

                    MimeBodyPart mbp = (MimeBodyPart) bp;
                    msgToRender.addAttachment(mbp);
                }
            }
    }catch(Exception e){
    }

额外文件包含邮件文本部分的属性。额外文件的内容

-001a114fd0aa0b377d0546bb84a0 Content-Type: text/plain; charset=UTF-8 please find the attachments... --001a114fd0aa0b377d0546bb84a0 Content-Type: text/html; charset=UTF-8 please find the attachments... --001a114fd0aa0b377d0546bb84a0--

首先,您应该了解 isMimeType 方法。

问题很可能是您没有处理 multipart/alternative 消息。见 sample code in the JavaMail FAQ.