It would be great if the MAPIMessage would have more IPM.Contact related properties. For example the first name, last name, birthday and several address fields. Or maybe a subclass could handle these msg files. By the way, you did a great job already!
Firstly, could you please upload a couple of sample messages which include this contact information in them? Please include with each message a plain text file describing the contact information, so when we come to write unit tests we can ensure we've fetched the correct stuff back out! Secondly, if you could identify which of the Microsoft specification PDFs contains the contact information definitions, that'd be a big help. There's something like 50 PDFs covering all of the outlook file formats, so it can take a while to find the right bit of the spec...
Created attachment 25528 [details] Zip containing .msg, .vcf, .rtf and .txt files with the same data, generated with German Outlook 2003 and English Outlook 2000 If you could tell me where all these specifications can be found, I maybe can seek out the one you need. By the way: The most interesting properties for a msg contact (all can be matched to properties of the vCard file format): ------------------------------- FullName Lastname Firstname JobTitle Department CompanyName BusinessAddress HomeAddress OtherAddress HomeTelephoneNumber HomeFaxNumber BusinessTelephoneNumber MobileTelephoneNumber BusinessFaxNumber OtherTelephoneNumber Email1Address Email1DisplayName Profession Birthday WebPage ------------------------------- All of them are in the example files + some more.
For the specs, start at: http://msdn.microsoft.com/en-us/library/cc463900%28EXCHG.80%29.aspx And work your way through all the other exchange/outlook related documents from there...
Looking at the attached files, it seems that the contact information is in the 0x8000 - 0x81FF range of chunk IDs, with some of it also duplicated in the 0x3Axx range. If you run the files through org.apache.poi.poifs.dev.POIFSViewer you'll see most of it quite easily. The next step is to find the specs, so we can be sure what'll always be in chunks with a given ID, rather than guessing....!
N progress for a long time, thus closing for now. Please reopen this issue if you plan to work on this.