Bodu.Formats.Outlook.Pst 0.7.1

dotnet add package Bodu.Formats.Outlook.Pst --version 0.7.1
                    
NuGet\Install-Package Bodu.Formats.Outlook.Pst -Version 0.7.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bodu.Formats.Outlook.Pst" Version="0.7.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bodu.Formats.Outlook.Pst" Version="0.7.1" />
                    
Directory.Packages.props
<PackageReference Include="Bodu.Formats.Outlook.Pst" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Bodu.Formats.Outlook.Pst --version 0.7.1
                    
#r "nuget: Bodu.Formats.Outlook.Pst, 0.7.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Bodu.Formats.Outlook.Pst@0.7.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Bodu.Formats.Outlook.Pst&version=0.7.1
                    
Install as a Cake Addin
#tool nuget:?package=Bodu.Formats.Outlook.Pst&version=0.7.1
                    
Install as a Cake Tool

Bodu.Formats.Outlook.Pst

API stability — Preview. The public API surface is largely settled but is still being finalized ahead of the 1.0 release and may change; breaking changes can land in a minor version until then.

A read-only reader for the Outlook personal-folders format (.pst / MS-PST, Unicode and ANSI formats), built on Bodu.IO.Pst — the node-database container reader — and the shared Bodu.Formats.Outlook MAPI value model it has in common with the .msg reader.

A mail store is opened as a disposable session exposing the store properties, the folder hierarchy, and every message with its decoded MAPI properties, recipients, attachments (including nested embedded messages), store-wide named-property resolution, and the text, HTML, and compressed-RTF (MS-OXRTFCP) bodies. There is no MAPI session emulation and no store authoring.

using Bodu.Formats.Outlook;

using var store = OutlookMailStore.OpenRead("archive.pst");

foreach (OutlookMailFolder folder in store.RootFolder.EnumerateSubfolders())
{
    Console.WriteLine(folder.DisplayName);

    foreach (OutlookMailMessage message in folder.EnumerateMessages())
    {
        Console.WriteLine($"  {message.Subject} — {message.SenderName}");

        foreach (OutlookRecipient recipient in message.Recipients)
            Console.WriteLine($"    {recipient.RecipientType}: {recipient.EmailAddress}");

        foreach (OutlookMailAttachment attachment in message.Attachments)
            Console.WriteLine($"    attachment: {attachment.FileName} ({attachment.Size} bytes)");
    }
}

What is read

  • The folder hierarchy from the root folder down — hierarchy, contents, and associated-contents tables, streamed row by row (search folders, which are Outlook runtime state, are excluded).
  • Every object's property context — fixed, variable-length, and multi-valued properties, Unicode and code-page (ANSI) strings alike, with per-object code-page resolution inherited down the store → message → attachment chain.
  • Recipient tables (row-resident properties) and attachment objects, including by-value content payloads and nested embedded messages (recursively). A payload larger than OutlookMailStoreReaderOptions.MaxInlineAttachmentBytes (1 MiB by default) is not decoded into the property collection; OpenContentStream streams it from the store block by block.
  • The store-wide name-to-id map (node 0x61), resolved bidirectionally.
  • The message bodies: plain text, HTML, and RTF (decompressed per MS-OXRTFCP).

Out of scope

  • Writing or editing .pst files.
  • OST files (recognized and rejected).
  • MAPI session semantics (IMsgStore emulation, search-folder population).
  • RTF→HTML/Text de-encapsulation (MS-OXRTFEX) — consumers receive the RTF verbatim.
  • TNEF (winmail.dat), S/MIME decryption, and OLE-attachment rendering.
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.7.1 54 9/24/2026
0.7.0 178 9/24/2026
0.6.0 72 9/24/2026
0.5.0 76 9/23/2026