This matrix describes the current public contract for persisted email and Outlook artifacts. It keeps transport outside the artifact engine while sharing bounded CMS/X.509 processing with PDF through OfficeIMO.Security.
| Capability | Status | Current contract | Boundary |
|---|---|---|---|
| EML and MIME read/write | Broad | Ordered and duplicate headers, encoded words, legacy charsets, continued parameters, nested multiparts, reports, protected entities, plain text, HTML, inline resources, attachments, embedded RFC messages, bounded malformed recovery, file-backed attachment reads, and chunked sync/async writer and EmailDocument.Save paths |
Mail transport, DKIM, ARC, and OpenPGP cryptography belong to the host; S/MIME data processing is covered below |
| Outlook MSG/OFT read/write | Broad | Standard, unknown, and named MAPI properties; Unicode and String8 code pages; sender/representing/received address forms; all recipient roles; message metadata; bodies; by-value, linked, OLE, and embedded attachments; selective compound streams; recurrence/time-zone evidence; and deterministic chunked output | PST/OST stores and Exchange directory resolution are not MSG artifact concerns |
| MSG compound storage | Complete for MSG | FAT, MiniFAT, DIFAT, hierarchical storages, regular/mini streams, embedded messages, and OLE/custom attachment storages | Not a public general-purpose CFB transaction API |
| Outlook messages | Broad | One typed MAPI vocabulary and property bag across MSG, TNEF, PST/OST, OAB, mutation, and semantic comparison; subject/conversation metadata; importance; priority; read/draft/receipt state; categories; follow-up; reminders; voting; reactions; and user properties | Unknown or vendor properties remain available through the same raw MapiProperties collection |
| Appointments and meetings | Broad | Start/end, location, all-day, busy/meeting/response state, attendees, lifecycle request/response/cancellation data, decoded recurrence and exceptions, Outlook time zones, bounded occurrence expansion, reminders, and diagnostic ICS conversion | Unknown recurrence and time-zone bytes are retained. Expansion is always caller-bounded; free/busy and server scheduling remain outside the artifact engine |
| Contacts and distribution lists | Broad | Contact names, organization, dates, addresses, phones, email slots, web/IM fields, privacy, picture metadata, retained custom properties, plus typed personal distribution-list membership and entry identities | Offline directory resolution is supplied by the OAB package; Exchange/Graph lookup remains outside the artifact engine |
| Tasks | Broad | Dates, status, completion, effort, owner/assignment state, request/accept/reject/update lifecycle data, decoded recurrence and exceptions, reminders, ordering, contacts, companies, billing, and mileage | Server-side task synchronization is outside the artifact engine |
| Journals and sticky notes | Broad | Journal timing/type/document flags and note color/size/position | UI rendering is outside scope |
| RTF bodies | Broad | MS-OXRTFCP LZFu and MELA, bounded decompression, CRC diagnostics, encapsulated HTML projection, and deterministic writing |
RTF syntax and semantic conversion are owned by OfficeIMO.Rtf |
TNEF / winmail.dat |
Broad | Message attributes, MAPI properties, recipient rows, attachments, embedded items, file-backed attachment reads, streaming checksums, limits, and deterministic writing | Transport generation policy remains with the mail client |
| mboxo and mboxrd | Supported | Aggregate read/write, envelope metadata, escaping, message-count and source limits; store sessions build a bounded offset/summary index with one-message retained memory, enforce the aggregate attachment budget, and decode selected entries on demand | Sessions are not concurrent mailbox engines |
| Standalone iCalendar / ICS | Read/write/mutate | One or more ordered VCALENDAR roots; arbitrary nested components; repeated, IANA, and X- properties; multivalued parameters; UTF-8 75-octet folding; bounded sync/async I/O; DATE, floating, UTC, and TZID-local temporal helpers; RRULE helpers; and structural/conformance validation |
TZID values are retained without host-OS normalization. Legacy .vcs data is parsed and preserved through the generic model, but RFC 5545 validation continues to report non-2.0 constructs |
| Standalone vCard / VCF | Read/write/mutate | Ordered multi-card streams for vCard 2.1, 3.0, and 4.0; groups; repeats; grouped properties; multivalued and legacy parameters; RFC 6868; quoted-printable continuation; binary/data-URI values; extensions; text helpers; and version-specific validation | Directory lookup/synchronization and vendor semantics without a standard mapping remain host concerns; unknown data stays accessible through the content-line model |
| PST and OST stores | Selective read; new Unicode PST write; verified Unicode PST mutation | ANSI/Unicode PST and supported PST-compatible OST NDB variants; typed IDs and folder navigation; bounded query AST, projections, sorting, keyset paging, and await-foreach enumeration; selective item parts; deferred attachments; associated items; and orphan discovery. New PST output covers folders, typed items, recipients, attachments, embedded messages, named properties, and multi-valued MAPI properties. Existing unprotected Unicode PST transactions support dry-run plans, copy, typed batch selection, property/attachment patches, sync or async-flush commit, semantic verification, optional backup, and atomic replacement | Mutation is a semantic rewrite whose IDs change, not in-place NDB editing. The async commit asynchronously flushes staging and copies backups; ordered PST serialization and semantic comparison remain synchronous stateful phases. Password-protected PSTs remain readable but are rejected for mutation. ANSI PST mutation, OST mutation/output, append, in-place repair, password/encryption authoring, Exchange synchronization, and recovery of content never cached in an OST are outside the contract |
| OLM, EMLX, Mbox, and mailbox directories | Read plus selected native write | Bounded Outlook for Mac ZIP/XML archives, individual Apple Mail EMLX items, partial-content metadata, indexed Mbox store sessions, Apple Mail trees, Maildir, and EML/MIME directory sessions. EMLX and Maildir directory output is atomic per item and includes preservation diagnostics/manifests | OLM opens into a bounded materialized model; Mbox retains offsets and summaries after a one-message-at-a-time indexing pass; mailbox directories remain lazy. OLM authoring is not implemented; Maildir flag suffixes fall back to the manifest on file systems that cannot represent them |
| Store query, search, and validation | Supported | Composable typed filters, table projections, stable multi-field sorting and continuation tokens; metadata queries; resumable semantic body/recipient/attachment-name search; snippets; progress; special-folder roles; content-availability reporting; conversation graphs; and bounded PST/OST CRC/signature/layout validation | Query and search are bounded offline scans, not an Outlook or Exchange index; structural validation does not repair the source |
| Store-associated Outlook data | Supported, bounded | Folder-associated catalog and detached folder MAPI snapshots; lossless master-category lists; roaming XML/dictionaries; view envelopes; opaque rule-organizer streams with fingerprints; search-folder definition/container metadata; folder user-property definitions; and reminder queues with explicit signal evidence and exclusion domains | Undecoded rule/view/search bytes are retained rather than guessed. The APIs do not execute Outlook rules, render views, or run a server search index |
| PST recovery and maintenance | Verified rewrite/export | Corruption-tolerant per-item recovery export with provenance manifest; no-write compaction and split plans; verified compaction to a distinct PST; and query/estimated-size partitioned PST split with complete-set commit/rollback protection | Compaction never replaces the open source. Split sizes are estimates until written. These workflows recover readable indexed data; they do not repair NDB structures in place |
| Store export, verified conversion, and merge | Supported | Selected items to EML, MSG, OFT, TNEF, Maildir, or EMLX; atomically committed streaming mbox; source-bound resumable PST/OST/OLM/EMLX/Mbox/mailbox-directory migration with change detection, item provenance, bounded attachment access, progress, explicit partial-result policy, durable verification journal, and optional privacy-safe keyed destination manifest; staged semantic verification before committing a new Unicode PST; and multi-source merge with folder modes, disk-backed keyed deduplication, retries, and bounded diagnostics | Search folders become static folders; unavailable OST/server content and unsupported attachment payloads are reported rather than invented. Incomplete writer state is retained only under the configured resume policy |
| Semantic fingerprints | Supported | Versioned migration, strict, and deduplication profiles; streamed attachment hashing; optional HMAC-SHA-256; and value-free difference reports | A fingerprint is a comparison/audit primitive, not a cryptographic authenticity signature |
| Outlook OAB address books | Read-only, selective | Bounded component discovery; dynamic-schema v4 Full Details entries and distribution lists; shared address/contact/MAPI projections; raw property retention; resumable search; duplicate-aware offline SMTP/proxy/EX/X.500/account identity index; seeded CRC, framing, and full-decode validation | Display templates and v2/v3 components are inspection-only; compressed Exchange downloads, patches, directory synchronization, and mutation are outside the expanded-cache reader |
| Protected Outlook messages | Supported for S/MIME data workflows | Detects opaque and clear-signed S/MIME wrappers; preserves and passes through the original artifact; creates clear or opaque signatures, recipient envelopes, and sign-then-encrypt RFC 5322/MIME output; verifies exact multipart/signed MIME bytes and opaque signed-data; decrypts EnvelopedData with an explicitly supplied recipient certificate and provider; reports provider, signer identity, chain, revocation, timestamp, and offline-policy evidence; and performs explicit decrypt-then-verify ordering while retaining unprojectable protected bytes | Sending, MSG/TNEF protected-container authoring, certificate/key discovery, automatic certificate-store search, DKIM/ARC/OpenPGP, and non-exportable RSA envelope decryption remain caller/host concerns |
| Artifact preservation and conversion result | Supported | Every EML/MSG/OFT/TNEF/mbox/EMLX writer reports preserved versus regenerated source selection, operation-scoped attachment access, stable diagnostic codes, and strict none/accepted/blocked loss disposition through EmailWriteResult |
The result describes one artifact operation; it does not create a transport-owned message model or retain attachment streams |
| Safe HTML/text/Markdown preparation | Optional bridge | OfficeIMO.Email.Html owns deterministic body choice, RTF fallback, untrusted sanitization, CID/content-location/filename resolution, remote-resource policy, bounded resources, safe HTML/text, and a prepared HTML document reused by Image and Reader Markdown projection |
Core OfficeIMO.Email has no HTML dependency and the bridge never performs network I/O |
| Lossless pass-through | Supported | Preserved raw source can be emitted unchanged when explicitly requested; EmailWriteResult.SourceSelection proves whether that source was selected |
Structured edits regenerate the artifact and cannot preserve an existing cryptographic signature |
| OfficeIMO.Reader integration | Supported | OfficeIMO.Reader.Email registers individual email artifacts, calendars/cards, PST/OST/OLM/EMLX and mailbox-directory stores, and typed OAB entry projection; body preparation reuses OfficeIMO.Email.Html |
The selective adapter owns no email parser or alternate body/resource policy |
| Mixed email-data discovery | Supported | The included OfficeIMO.Email.Data API detects one file or directory and returns the existing EmailDocument, IcsDocument, VCardDocument, EmailStoreSession, or OfflineAddressBookSession owner result |
The facade contains no alternate parsers, mutation logic, or document extraction. Profile/autocomplete caches remain deferred until a real consumer defines that contract |
| Oracle or evidence | Result |
|---|---|
| MsgKit 3.0.5 runtime generation | OfficeIMO reads MsgKit EML-to-MSG output and named contact properties without mapping diagnostics |
| MsgReader 6.0.12 | OfficeIMO output is readable for message, recipient, room/resource, body, attachment, appointment, contact, task, and journal contracts |
| MsgReader 6.0.12 sample corpus | 15 real MSG fixtures matched subject, attachment count, and recipient count with no MSG parse errors, named-property warnings, or property-stream alignment warnings |
| OpenMcdf 3.1.4 | Test-only oracle opens OfficeIMO mini-stream, regular-stream, hierarchical, empty-stream, and DIFAT compound output |
| MimeKit 4.x TNEF reader | Accepts OfficeIMO TNEF output as compliant |
| MimeKit independent MIME corpus | Test-only exact-version fixtures cover malformed recovery, nested multiparts, duplicate ordered headers, legacy encodings, RFC 2231 continuations, embedded messages, delivery reports, and protected entities. MimeKit remains absent from runtime projects. |
| iCalendar/vCard contract suite | Read-edit-write-reopen coverage includes multiple calendars/cards, nested alarms, recurrence and temporal forms, scoped TZID validation, vCard 2.1/3.0/4.0, grouped/repeated fields, media values, legacy parameter quoting, quoted-printable continuation, RFC 6868, Unicode octet folding, and configured size/depth/count limits |
| Microsoft Outlook for Mac | Opens OfficeIMO-authored message, appointment, contact, task, journal, and note MSG files by their native subjects; the message view showed sender, recipient, body, and attachment content |
| Microsoft Outlook for Windows | Opt-in COM fixtures create mail, appointment, contact, task, named/unknown MAPI, address, attachment, recurrence, and time-zone evidence; OfficeIMO rewrites the artifacts and Outlook semantically reopens them. The PST gate mounts a generated Unicode store and checks folder, subject, recipient, body, and attachment metadata. |
| Public Outlook S/MIME corpus | The opt-in exact-commit corpus test verifies signed Outlook EML and binary MSG, decrypts encrypted EML/MSG with the supplied exportable test key, and decrypts then verifies signed-and-encrypted EML/MSG on net472, net8.0, and net10.0; an Outlook 11 mailing-list artifact also proves CRLF canonicalization against OpenSSL 3.0 without redistributing that external message |
| Local packed-package consumer | A clean consumer restores the locally packed unified OfficeIMO.Email package and exercises individual artifacts, asynchronous store streaming, semantic fingerprints, Unicode PST creation/reopen, multi-store merge, and OAB discovery |
| Performance contracts | Release tests cover 1 MiB MIME, 1 MiB MSG attachment, 500-message mbox, a file-backed 16 MiB attachment, a 2,000-message PST, and 100,000-entry disk-backed mapping/dedup indexes; see performance evidence |
| Large-store contracts | A virtual 64 GiB PST contract covers selective reads, deferred attachment I/O, content search, and structural validation under fixed source-read ceilings; an aggregate-only 22.4 GB OST run exercises extraction, search, calendar items, Reader projection, and bounded structural checks |
| Unicode PST writer | Synthetic round trips cover multi-block heaps and tables, typed MAPI properties, recipients, large attachments, embedded and associated items, named properties, application-bound checkpoint/resume, verified OST-to-new-PST conversion, and multi-format merge. The opt-in libpff gate independently opens and exports an OfficeIMO PST, then verifies subject, body, and attachment content; the classic Outlook gate mounts the generated Unicode store and semantically reads it; and the Windows ScanPST gate requires a clean no-repair scan with byte-identical input. |
| Existing Unicode PST mutation | Synthetic transactions cover mixed folder/item create, copy, rename, move, replace, typed property and attachment patch, query-selected batch patch, associated-state change, recursive delete, sync and async-flush commit, optional byte-identical backup, exact folder-set and semantic reopen verification, ID mappings, no-op/disposal source preservation, ANSI rejection, and cycle/mandatory-folder guards |
| PST recovery, compaction, and split | Real generated PST round trips cover per-item recovery manifests, no-write capacity/selection plans, distinct-destination verified compaction, stable query/size split planning, semantic verification of every part, and complete-set rollback protection |
| Associated Outlook data and reminders | Real generated PST round trips cover FAI-only enumeration, roaming configuration dictionaries, category lossless edit/reopen, views, opaque rules, search-folder definitions/containers, folder fields, duplicate-effective selection, and reminder signal/exclusion states |
| Unified email-data facade | Cross-target tests open EML, extension-free ICS/VCF, a generated Unicode PST, and a generated OAB v4 Full Details component through one owner-dispatch API |
| Outlook OAB cache | Generated v4 fixtures cover every supported property encoding, corruption and limits; aggregate-only validation of 18 private cache components decoded and fully validated all 8,049 declared entries with no retained directory data |
- SMTP, IMAP, POP3, Graph, authentication, and account synchronization
- DKIM, ARC, OpenPGP, certificate/key discovery, and automatic recipient or trust-policy selection
- In-place PST NDB mutation/append, ANSI PST mutation, OST mutation/output, in-place repair, or password/encryption authoring
- OLM authoring, proprietary DBX mailboxes, Outlook/Mac profile databases, autocomplete caches, search indexes, synchronization state, and other profile/cache formats outside the dedicated OAB owner
- xCal/xCard, jCal/jCard, JSCalendar, and JSContact public adapters. The shared content-line model remains the canonical ICS/VCF owner so XML/JSON adapters can reuse it without duplicating calendar/contact semantics; JSCalendar and JSContact require separate mapping contracts rather than syntax substitution
- a public arbitrary-CFB editing or transaction package
- Outlook UI automation or identical editors across platforms; Outlook for Mac uses its generic item viewer for non-mail MSG classes
- pretending that every vendor-specific named property has a typed convenience field; retained MAPI values are the compatibility escape hatch
Mail transport remains outside this package. OfficeIMO.Email owns persisted EML/MIME, MSG/OFT, TNEF, mailbox-store, calendar/contact, and address-book artifacts; transport libraries consume those public models without introducing another persisted-file engine.