MimeMessage не анализирует вложения в файлах Outlook EML

Я анализирую/извлекаю данные из eml файлов, используя javax.mail.internet.MimeMessage .

 MultiPart multiPart = 
 (MultiPart)MimeMessage.getContent();
  ...//check if attachments are present, then extract it
 MimeBodyPart part = (MimeBodyPart)multiPart.getBodyPart(attachmentIndex);
 String fileName = part.getFileName();

Имя файла всегда печатает null. Как узнать имя файла вложения и расширение? По крайней мере, не зная расширения, я даже не могу правильно сохранить файл.

По сути, я ищу общий API-интерфейс библиотеки Java, который анализирует файлы eml и выдает текст сообщения и вложения (рекурсивно?).


person RRM    schedule 16.01.2018    source источник


Ответы (1)


Вложения не обязательно должны иметь имя файла.

Если ваш EML-файл имеет формат MIME и содержит имя файла, но JavaMail не находит его, опубликуйте пример.

person Bill Shannon    schedule 17.01.2018
comment
но в моем случае один файл EML содержит несколько вложений. Если я не знаю расширение файла, как мне сохранить содержимое в правильном формате? - person RRM; 17.01.2018
comment
Как определить, имеют ли мои файлы EML формат MIME? Я вижу, что перед каждым бинарным содержимым присутствуют Content-Type: application/pdf; name=xyz.pdf и Content-Disposition: attachment; filename=. - person RRM; 17.01.2018
comment
Похоже, это формат MIME. Какую версию JavaMail вы используете? Если вы запустите пример программы JavaMail mgshow.java в файле EML, какой вывод вы получите? - person Bill Shannon; 17.01.2018
comment
ближе к концу я получаю %%EOF CONTENT-TYPE: application/vnd.ms-excel; name="..." FILENAME: ...xls This is just an input stream после этого некоторые двоичные данные на выходной консоли в IDE. - person RRM; 18.01.2018
comment
Похоже, JavaMail находит имя файла. Посмотрите на исходный код msgshow.java и выясните, что он делает не так, как ваша программа. - person Bill Shannon; 18.01.2018