2017-01-23 112 views
0

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

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

这里msgToDownload是采取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请找到附件... --001a114fd0aa0b377d0546bb84a0 Content-Type:text/html;字符集= UTF-8,请找到附件... --001a114fd0aa0b377d0546bb84a0--

回答

0

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

问题很可能是您没有处理多部分/替代邮件。请参阅sample code in the JavaMail FAQ

+0

现在下载附件时,我的程序还下载了一个文件,该文件包含该文件中的所有信息,如“内容类型”和文本消息。但我不希望它下载该信息。 –

+0

即使邮件没有附件,也会下载一个带有文本属性的邮件。 –

+0

而在上面的代码中,我认为'messageType.contains(“multipart”)'意味着所有类型的multipart或者'multipart/alternative'或者其他类型的multipart。这不正确。 –