Как прочитать общее свойство с Apache POI HSMF - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь извлечь поле BillingInformation из MSG-файла Outlook с помощью POI hsmf, но каждый раз получаю исключение ChunkNotFoundException.Я проверил в Outlook, что в поле есть контент.

public class MessageReader {
    private static final int SUBJECT_CHUNK = 0x0037;
    private static final int BILLING_INFORMATION_CHUNK = 0x00008535;
    public static void main(String[] argv) {
        try {
            MAPIMessage mapiMessage = new MAPIMessage("MessageWithBillingInformation.msg");
            System.out.println(mapiMessage.getStringFromChunk(new StringChunk(SUBJECT_CHUNK, true)));
            System.out.println(mapiMessage.getStringFromChunk(new StringChunk(BILLING_INFORMATION_CHUNK, true)));
        } catch (IOException e) {
            e.printStackTrace();  
        } catch (ChunkNotFoundException e) {
            e.printStackTrace();  
        }
    }
}

Вся найденная документация содержит 0x00008535 в качестве правильного идентификатора для платежной информации: http://msdn.microsoft.com/en-us/library/cc765867.aspx

Спасибовы

1 Ответ

1 голос
/ 03 октября 2012

Использование chunkID 0x800A работает для чтения поля Billing Information, поэтому код выглядит следующим образом:

public class MessageReader {
private static final int SUBJECT_CHUNK = 0x0037;
private static final int BILLING_INFORMATION_CHUNK = 0x800A;
public static void main(String[] argv) {
    try {
        MAPIMessage mapiMessage = new MAPIMessage("MessageWithBillingInformation.msg");
        System.out.println(mapiMessage.getStringFromChunk(new StringChunk(SUBJECT_CHUNK, true)));
        System.out.println(mapiMessage.getStringFromChunk(new StringChunk(BILLING_INFORMATION_CHUNK, true)));
    } catch (IOException e) {
        e.printStackTrace();  
    } catch (ChunkNotFoundException e) {
        e.printStackTrace();  
    }
}

}

...