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

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to