LazyMAPI

MAPI Properties

MAPI Property: PR_NORMALIZED_SUBJECT, PR_NORMALIZED_SUBJECT_A, PR_NORMALIZED_SUBJECT_W
Description: Contains the message subject with any prefix removed.
Property ID: $0E1D
Property type: PT_STRING8, PT_UNICODE
Area: E-mail

Remarks:
These properties are computed by message store or transport providers from the PR_SUBJECT (PidTagSubject) and PR_SUBJECT_PREFIX (PidTagSubjectPrefix) properties in the following manner.

If the PR_SUBJECT_PREFIX is present and is an initial substring of PR_SUBJECT, PR_NORMALIZED_SUBJECT and associated properties are set to the contents of PR_SUBJECT with the prefix removed.

If PR_SUBJECT_PREFIX is present, but it is not an initial substring of PR_SUBJECT, PR_SUBJECT_PREFIX is deleted and recalculated from PR_SUBJECT using the following rule: If the string contained in PR_SUBJECT begins with one to three non-numeric characters followed by a colon and a space, then the string together with the colon and the blank becomes the prefix. Numbers, blanks, and punctuation characters are not valid prefix characters.

If PR_SUBJECT_PREFIX is not present, it is calculated from PR_SUBJECT using the rule outlined in the previous step. This property then is set to the contents of PR_SUBJECT with the prefix removed.


Note When PR_SUBJECT_PREFIX is an empty string, PR_SUBJECT and this property are the same.

Ultimately, this property should be the part of PR_SUBJECT following the prefix. If there is no prefix, this property becomes the same as PR_SUBJECT.

PR_SUBJECT_PREFIX and this property should be computed as part of the IMAPIProp::SaveChanges implementation. A client application should not prompt the IMAPIProp::GetProps method for their values until they have been committed by an IMAPIProp::SaveChanges call.

The subject properties are typically small strings of fewer than 256 characters, and a message store provider is not obligated to support the Object Linking and Embedding (OLE) IStream interface on them. The client should always attempt access through the IMAPIProp interface first, and resort to Istream only if MAPI_E_NOT_ENOUGH_MEMORY is returned.