如何获取电子邮件所有附件的文件名?

我试图使用java和imap获取所有电子邮件附件的文件名。我的代码是:

MimeMessage msg = (MimeMessage) messages[i]; String fileName = msg.getFileName(); System.out.println("The file name of this attachment is " + fileName); 

但即使电子邮件中包含附件,它也会一直打印出来。我在SO上看到了不同的代码,但没有一个工作……如果附件不止一个,我不知道该怎么办。
PS:我只想获取文件名而不想下载附件。

首先,使用以下代码确定消息是否包含附件:

 // suppose 'message' is an object of type Message String contentType = message.getContentType(); if (contentType.contains("multipart")) { // this message may contain attachment } 

然后我们必须遍历多部分中的每个部分以识别哪个部分包含附件,如下所示:

 Multipart multiPart = (Multipart) message.getContent(); for (int i = 0; i < multiPart.getCount(); i++) { MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(i); if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) { // this part is attachment // code to save attachment... } } 

要保存文件,您可以执行以下操作:

 part.saveFile("D:/Attachment/" + part.getFileName()); 

资源