Получить адрес электронной почты для POP 3, полученный как winmail.dat
Когда я пытаюсь получить привязку от почты POP 3, я получаю их как winmail.dat, а не оригинальное имя вложенного файла. Как я могу получить оригинальное имя файла?
for (int i = 0; i < multipart.getCount(); i++)
{
BodyPart bodyPart = multipart.getBodyPart(i);
if(!Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()))
{
//do something
}
else
{
bodyPart.getFileName(); // here only get the winmail.dat
}
}
1 ответ
Решение
Это часть настроек Exchange, и, к сожалению, вам понадобится извлечь исходное содержимое из WinMail.dat с помощью JTNEF.
"Пакет Java TNEF представляет собой реализацию обработчика сообщений TNEF с открытым исходным кодом, которую можно использовать в качестве утилиты командной строки или интегрировать в почтовые приложения на основе Java для извлечения исходного содержимого сообщения".
Это можно найти в сторонних инструментах JavaMail.
В качестве альтернативы и то, что выглядит проще, это POI-HMEF
Извлечение образца:
public void extract(String winmailFilename, String directoryName) throws Exception {
HMEFContentsExtractor ext = new HMEFContentsExtractor(new File(winmailFilename));
File dir = new File(directoryName);
File rtf = new File(dir, "message.rtf");
if(! dir.exists()) {
throw new FileNotFoundException("Output directory " + dir.getName() + " not found");
}
System.out.println("Extracting...");
ext.extractMessageBody(rtf);
ext.extractAttachments(dir);
System.out.println("Extraction completed");
}
Здесь также есть образец для печати содержимого.