How Windows Mobile 6.5 Synced Exchange Contact Photos
Windows Mobile 6.5 synchronized contact photos with Microsoft Exchange Server primarily through the Exchange ActiveSync (EAS) protocol. By leveraging specific EAS schema elements introduced in protocol versions 12.0 and 14.0 (associated with Exchange Server 2007 and 2010), Windows Mobile devices could transmit and receive binary image data attached to personal contact items. This process involved converting stored contact images into Base64-encoded strings, transmitting them over secure HTTPS connections, and storing them locally within the device's Pocket Outlook database to display across caller ID and address book interfaces.
The Exchange ActiveSync (EAS) Architecture
The synchronization process relied on the Exchange ActiveSync client embedded within Windows Mobile 6.5. When establishing a partnership with an Exchange Server, the client negotiated the highest mutually supported EAS version:
- EAS Version 12.0/12.1 (Exchange 2007): Added direct native support for syncing contact pictures within personal contacts.
- EAS Version 14.0 (Exchange 2010): Refined photo synchronization and integrated better handling for larger resolutions and Global Address List (GAL) searches.
During a standard sync session, the Windows Mobile client issued
Sync commands targeting the Contacts folder. Changes
detected on the server or the mobile device initiated a two-way
synchronization cycle.
Data Encoding and the Picture Element
Exchange stored contact photos in user mailboxes as special
attachments within MAPI contact items (specifically utilizing the
PR_ATTACH_DATA_BIN property for items flagged with the
contact photo attribute).
When translating this data for mobile delivery:
- XML Conversion: The Exchange ActiveSync provider extracted the image binary from the MAPI store.
- Base64 Encoding: The binary data was converted into
a Base64-encoded string and wrapped inside the
<Picture>tag within the EAS XML payload under the Contact class schema. - Payload Transmission: The encoded image was transmitted over an SSL/TLS-encrypted HTTPS session along with standard contact fields (name, phone numbers, email addresses).
Client-Side Processing in Windows Mobile 6.5
Once the Windows Mobile 6.5 device received the XML response, the internal ActiveSync engine processed the photo data:
- Decoding: The client decoded the Base64 stream back into raw image bytes (typically JPEG or PNG formats).
- Storage via POOM: The decoded image was handed off
to the Pocket Outlook Object Model (POOM) and written to the internal
contacts database (
pim.vol). - Caching: Windows Mobile 6.5 generated optimized, downscaled thumbnails suitable for low-power mobile processors, saving them to a local cache to ensure smooth scrolling in the contacts list.
- UI Integration: The image was mapped to the unified contacts experience, enabling caller ID pictures during incoming calls and visual contact cards in the dialer.
Personal Contacts vs. Global Address List (GAL)
Contact photo synchronization differed based on where the contact originated:
- Personal Outlook Contacts: Full two-way synchronization was supported. If a user added a photo to an Outlook contact via the desktop client or via the Windows Mobile camera, the photo synced seamlessly back and forth.
- Global Address List (GAL): Windows Mobile 6.5 did
not automatically sync high-resolution corporate GAL photos to local
device storage. To view a photo from an organization-wide contact stored
in Active Directory's
thumbnailPhotoattribute, users had to perform an online GAL search (Exchange 2010 environments) or manually copy the GAL recipient into their personal Exchange contacts folder.