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

标签 java imap attachment

我正在尝试使用 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());

Source

关于java - 如何获取电子邮件所有附件的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882797/

相关文章:

Java Spring 项目结构 - 未检测到 Controller

delphi - 从 imap4 服务器发送 'BAD error_here' 时检索错误消息

java - 使用 Java IMAP 时两次获取 Gmail 邮件的 html 内容

java - 打开由附加到电子邮件的 HSSFWorkbook 生成的 Excel 工作表时,Excel 崩溃

c# - 如何从bot framework C#中读取附件内容?

java - 需要帮助分析 Java 线程转储

java - 取 3 个整数,创建一个日期

java - jsp 中出现 NullPointerException,但控制台中没有出现 NullPointerException

oauth - 如何使用 OAuth 或 OAuth2 身份验证通过 IMAP 访问 Yahoo Mail

mysql - MYSQL中如何使用MS Access 2010附加文件