Получить адрес электронной почты для 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");
}

Здесь также есть образец для печати содержимого.

Другие вопросы по тегам