我正在尝试使用 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 = (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());
关于java - 如何获取电子邮件所有附件的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882797/