On Mon, 2021-03-15 at 12:38 +0800, Paul Wise wrote: > The second is that when the headers are considered invalid, the To > field doesn't get an email address, only a name.
I figured out the problem here, the PR_DISPLAY_BCC, PR_DISPLAY_CC and PR_DISPLAY_TO fields are basically bogus and contain *only* the names and not the addresses and are filled out automatically by Outlook based on the recipients of the message, which are stored in a separate MAPI table to the email properties. libpst extracts the email properties, but doesn't store the recipients table anywhere as far as I can tell. https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidtagdisplayto-canonical-property https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidtagdisplaycc-canonical-property https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidtagdisplaybcc-canonical-property I propose the following set of fixes for this issue: Add a pst_item_recipient struct with the set of properties described by Microsoft at the URL below and a pointer to the next recipient struct. https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/recipient-tables Add a recipients linked list element to the pst_item struct with a pointer to the first pst_item_recipient struct. Add code to the pst_process function to populate the recipients linked list in a similar way to how the attachments are done. Does that seem correct to you? Are you willing to work on this or should I? -- bye, pabs https://wiki.debian.org/PaulWise
signature.asc
Description: This is a digitally signed message part