FIRST ORDER EXCLUSIVE: TAKE AN EXTRA5% OFFANY PRODUCT•USE CODE:
Data TB
Data TB

Enterprise Edition

Beryl.Outlook SDK

Advanced Outlook PST and OST Recovery SDK. No Outlook. No MAPI. No Office.

Beryl.Outlook is a recovery engine you build into your own software. Give it a PST or OST file that Outlook cannot open, and it returns the mail, contacts, calendars, tasks and attachments that are still on the disk, packed into a fresh PST that Outlook opens without any complaint.

Data TB Software built it for the teams who cannot ask a customer to install Outlook on a server: backup vendors, forensic labs, eDiscovery platforms, managed service providers and IT departments that handle damaged mailboxes every week.

Choose your language below. Each package is built around the same recovery engine, so the same damaged file gets the same careful treatment whichever language your product is written in.

dotnet add package Beryl.Outlook
Lifetime License Validity 1 Year Free Updates Windows, Linux, macOS No Outlook or MAPI needed
Beryl.Outlook SDK Architecture

Choose Your Language

LanguageA good fit forGet the SDK
.NETWindows services, ASP.NET back ends, worker services, desktop and forensic toolsGet it on NuGet
JavaEnterprise back ends, archive and compliance platformsAvailable on request
C++Native forensic tools and desktop softwareAvailable on request
PythonAutomation scripts, data pipelines, notebooksAvailable on request
GoSmall cloud services, workers and command line toolsAvailable on request
RustMemory-safe tooling and high-throughput pipelinesAvailable on request

The Problems It Solves

What went wrongWhat you usually seeWhat Beryl.Outlook does
The file header was wiped by a crash, a failing disk or ransomwareThe file will not open at allRebuilds the internal index from the raw data blocks
Outlook throws error 0x80040119 or 0x80040600The repair tool trims records and gives up on the restReads the lower database layers directly and pulls out what is intact
A user emptied Deleted Items or pressed Shift+DeleteThe mail looks gone for goodScans unused blocks and brings back items that were not yet overwritten
An OST belongs to an account that no longer existsOutlook cannot open it without the serverReads the offline file and writes the data to a normal PST
A mailbox has grown past 30 GBMemory spikes, crashes, or Outlook size limitsStreams the file in blocks and can split the output into smaller PSTs
Your product needs to create PST filesAutomating Outlook on a server, which is fragileWrites the PST file itself, with no Outlook involved

How It Works

  1. Open and scan. Point the engine at a PST or OST file. Use FastScan for healthy files and ExtensiveScan for damaged ones.
  2. Review the result. Browse the recovered folders and items. Anything rescued from unused space is flagged as deleted so your code can treat it separately.
  3. Export. Write a clean Unicode PST, or split it into parts. Large attachments can be moved out to a folder to keep the PST lean.
  4. Ship it. The output opens in Outlook 2003 all the way to Microsoft 365.

The flow is the same in every language: open, scan, review, export.

What You Get

Repair damaged files

  • Rebuilds the folder tree when the first 512 bytes of the file, including the header and root pointers, are zeroed or overwritten
  • Reads unencrypted, compressible-encryption and high-encryption data blocks without any setup
  • Fixes broken table and heap structures so folders and message lists load again
  • Handles both ANSI (Outlook 97 to 2002) and Unicode PST files

Recover deleted mail

  • Finds permanently deleted emails, contacts, calendar items and attachments in unused database blocks
  • Gathers orphaned items into a dedicated recovered folder and marks each one as deleted
  • Pulls embedded files, PDFs, images and documents out of damaged messages

Write clean PST files

  • Produces Unicode PST files that follow the Microsoft MS-PST specification
  • Rebuilds the original folders, including Inbox, Sent Items, Contacts, Calendar, Tasks, Notes, Journal and custom subfolders
  • Keeps message headers, Internet Message IDs, HTML and RTF bodies, flags, delivery times, read status and custom MAPI properties

Handle very large mailboxes

  • Streams data in blocks, so memory use stays steady on 30 GB to 50 GB files and above
  • Splits the output into 5 GB, 10 GB, 20 GB or 50 GB parts
  • Detaches heavy media attachments into an external folder when you want a small, fast PST

Find files you did not know about

  • On Windows, reads Outlook profiles from the registry and lists the data files behind them
  • Crawls local drives, network shares and external storage for forgotten .pst, .ost and .bak files

Choosing a Scan Mode

FeatureFastScanExtensiveScan
File conditionHealthy, or with small index problemsBadly corrupt, unopenable, or under investigation
ApproachFollows the file's own valid indexesReads the file block by block with a sliding window
SpeedRuns at close to disk speedSlower, because it checks everything
Deleted item recoveryOnly items the file still listsIncludes items carved from unused space
Typical useMigration pipelines and bulk conversionCrash recovery, ransomware cases, evidence work

What Can Be Extracted

ItemDetails you get back
EmailsSubject, sender, recipients, dates, importance, plain text, HTML and RTF bodies, transport headers, MAPI properties
AttachmentsFile name, MIME type, content stream, inline images, and files inside deleted items
ContactsNames, job title, company, email addresses, phone numbers, postal addresses
Calendar itemsSubject, location, start and end, all-day flag, organizer, attendees
TasksSubject, dates, percent complete, status, priority
Notes and journalNote text, size and colour, timeline entries

Reads: PST (ANSI and Unicode), OST from Exchange 2003 to Microsoft 365 and IMAP, plus .bak files and raw damaged copies.

Writes: Unicode PST, single or split, with attachments checked by CRC and stored with the right content type.

Runs Where Your Software Runs

Operating systems

Windows, Windows Server 2016 to 2025, Ubuntu, Debian, RHEL, CentOS, Alpine, macOS on Apple Silicon and Intel

Containers and cloud

Docker, Kubernetes, AWS Lambda and ECS, Azure Container Apps

.NET runtimes

.NET Framework 4.6.2 to 4.8.1, .NET Core 2.0 to 3.1, .NET 6 to 10 and above, plus .NET Standard 2.0

Other languages

Java, C++, Python, Go and Rust through the native interface

Quick Start for .NET

Install the package.

dotnet add package Beryl.Outlook

Scan a damaged file and write a clean PST.

using Beryl.Outlook;
using Beryl.Outlook.Models;
using Beryl.Outlook.Services;

var engine = new BerylOutlookEngine();

// FastScan for healthy files, ExtensiveScan for damaged ones
var scan = await engine.ScanAsync(@"D:\cases\laptop42\archive.pst", ScanMode.ExtensiveScan);

Console.WriteLine($"{scan.TotalItemsCount} items, {scan.TotalDeletedItemsCount} recovered from deleted space");

await engine.ExportAsync(scan, new ExportOptions
{
    Format = ExportFormat.PST,
    OutputDirectory = @"D:\cases\laptop42\recovered",
    RecoverDeletedItems = true,
    PstOption = PstSaveOption.SaveNormally
});

List only the deleted items that were carved out.

foreach (var folder in scan.Folders)
{
    foreach (var mail in folder.Messages.Where(m => m.IsDeleted))
    {
        Console.WriteLine($"{mail.DeliveryTime:u} {mail.SenderEmailAddress} {mail.Subject}");
    }
}

Split the output for a huge mailbox.

await engine.ExportAsync(scan, new ExportOptions
{
    Format = ExportFormat.PST,
    OutputDirectory = @"D:\cases\laptop42\parts",
    PstOption = PstSaveOption.SplitPst,
    SplitSize = PstSplitSize.Split10GB
});

Run many mailboxes at once. Wrap each file in its own try and catch, and one bad mailbox never stops the others.

var gate = new SemaphoreSlim(4);

var jobs = Directory.GetFiles(inputFolder, "*.ost").Select(async file =>
{
    await gate.WaitAsync();
    try
    {
        var engine = new BerylOutlookEngine();
        var scan = await engine.ScanAsync(file, ScanMode.FastScan);

        await engine.ExportAsync(scan, new ExportOptions
        {
            Format = ExportFormat.PST,
            OutputDirectory = Path.Combine(outputFolder, Path.GetFileNameWithoutExtension(file)),
            PstOption = PstSaveOption.SaveNormally
        });
    }
    catch (Exception ex)
    {
        Console.WriteLine($"{file}: {ex.Message}");
    }
    finally
    {
        gate.Release();
    }
});

await Task.WhenAll(jobs);

Activate your license file when you move to production.

new License().SetLicense(@"C:\licenses\Beryl.Outlook.lic");
Console.WriteLine(BerylLicense.IsLicensed);

Built for Production

Many mailboxes at once

Designed to run in parallel pipelines, so hundreds of mailboxes can be processed side by side

Failures stay local

A corrupt block in one mailbox is contained and the rest of the queue keeps going

A clean host

No registry entries are written, no reboot is needed, and nothing is left behind when you work in memory

Container friendly

Drops into slim Linux images and short-lived cloud workers

Steady memory

Block streaming keeps the footprint predictable, however big the file

Why Not Use Outlook Automation or a General Email Library?

Outlook automation needs a licensed desktop install, a user profile and the Windows COM layer. It is hard to run on a server and impossible on Linux. Beryl.Outlook skips all of it.

The built-in repair tool fixes what it can see and tends to cut away records when the damage runs deeper. It is also a desktop tool, so you cannot call it from your own product.

General email libraries are made to read healthy files. Some skip a bad item and carry on, which helps, but rebuilding a destroyed header or finding mail that no folder lists anymore is a different job. That job is the whole purpose of this SDK.

Where Teams Use It

  • Digital forensics and law enforcement: deleted emails and attachments from seized computers and failing drives
  • eDiscovery and compliance: searching large collections of orphaned PST and OST files for legal review
  • Cloud migration: turning unreachable Exchange OST files into PSTs ready for Microsoft 365 or Google Workspace
  • Disaster recovery and MSP work: bringing client mailboxes back after crashes, bad disks or ransomware
  • Software vendors: adding PST recovery and PST creation inside backup, archive and forensic products

Licensing

Evaluation. Inspect every mailbox you like. Export is limited to 10 items per folder, so you can test your own workflow before you buy.

Enterprise Forensic Edition. Unlimited mailboxes, unlimited item export, multi-threaded batch operations and commercial deployment rights for products you distribute. Includes lifetime perpetual license validity with 1 year of free updates and technical support from the purchase date.

License files are signed with 4096-bit RSA and SHA-512.

Frequently Asked Questions

QWhich languages does Beryl.Outlook support?

A.NET, Java, C++, Python, Go and Rust. The .NET package is on NuGet, and the other packages are listed in the language table at the top of this page.

QDo I need Microsoft Outlook, Office or MAPI installed?

ANo. The SDK reads and writes the PST format directly, so nothing from Microsoft Office has to be on the machine.

QCan it open a PST or OST with a destroyed header?

AYes. It searches the file for its own block markers and rebuilds the folder structure from them, even when the header and root pointers are zeroed.

QCan it get back emails that were permanently deleted?

AIt can recover items whose data has not been overwritten yet. Use ExtensiveScan on an untouched copy of the file for the best chance.

QDoes it read OST files?

AYes. It reads OST files from Exchange 2003 through Microsoft 365, including IMAP OST files, and can write the contents to a standard PST.

QWill it run on Linux, macOS or in Docker?

AYes. It runs on Windows, Linux, macOS, Docker and Kubernetes. Finding Outlook profiles through the registry only works on Windows.

QHow large a mailbox can it handle?

AFiles of 50 GB and more. The engine streams data in blocks, and you can split the output into 5 GB, 10 GB, 20 GB or 50 GB PST files.

QWhich Outlook versions open the PST files it creates?

AOutlook 2003, 2007, 2010, 2013, 2016, 2019, 2021, 2024 and Microsoft 365.

QHow is this different from the repair tool that comes with Outlook?

AThat tool is a desktop utility that repairs only what it can reach. Beryl.Outlook is a library you call from your own code, and it works at the lowest database layers to recover items the built-in tool drops.

QWhat are the limits of the evaluation version?

AYou can scan and inspect everything, but export stops at 10 items per folder. A commercial license removes the limit.

QCan I include it in a product I sell?

AYes. The Enterprise Forensic Edition includes commercial deployment rights. Ask for a quote.

Ready to build?

Try the full SDK free on NuGet — buy a commercial license when you are ready for production.