Shubham Dixit, email forensics and data file expert

Written by Jennifer Walsh. Reviewed for technical accuracy by Shubham Dixit, Independent Expert in Email Forensics and Data File Conversion.

Shubham is an independent external reviewer and not an employee of PCDOTS.

Quick answer. Email addresses in a PST sit in the From, To and Cc headers of every message, so unlike scraping phone numbers this is a clean, reliable read of a real field. To extract email addresses from a PST file without Outlook, the open-source readpst plus a short script lists them, or a tool reads the .pst directly into a deduped list.

Where the addresses live, and why that helps?

Good news to start with. Email addresses are not scattered through the text the way phone numbers are, they sit in fixed header fields, the From, To, Cc and Bcc of every single message. That means pulling them out is a clean, reliable read of a real field, not a fuzzy guess, so you end up with actual addresses rather than a pile of lookalikes to sort through. The only real work is getting inside the PST, which is a closed Outlook container, and then reading those headers across every message. Both routes below do exactly that.

From[email protected] To[email protected] Cc[email protected] tidy fields,not free textso the read is reliable

Addresses come from real header fields, so what you extract is trustworthy.

“This is one of the tidier extraction jobs. Addresses live in structured headers, so unlike pulling phone numbers out of body text, what comes back is dependable, real addresses in, real addresses out. For a free route with no Outlook, I convert the PST to EML with readpst and then read the From, To and Cc lines with a few lines of Python. When someone wants the whole mailbox without touching a terminal, a tool that reads the .pst directly is the sensible call. And whichever you use, remember the output is people’s contact data, so pull it for a real reason and keep it safe.” Shubham Dixit, Email Forensics reviewer (draft, pending approval)

The free way, no Outlook needed

Since the searches keep asking for a way without Outlook, here it is, and it costs nothing. First turn the PST into readable messages with the open-source readpst, which does not need Outlook at all. Install it with brew install libpst on a Mac, apt install pst-utils on Linux, or run it on Windows through WSL, then convert.

readpst -e -r -o eml_folder your_file.pst

That writes each message as an .eml. Now a short Python script reads the From, To and Cc headers of those files and keeps a deduped list.

import os, email
from email.utils import getaddresses

addresses = set()
for root, dirs, files in os.walk('eml_folder'):
    for name in files:
        if not name.endswith('.eml'):
            continue
        with open(os.path.join(root, name), 'rb') as f:
            msg = email.message_from_binary_file(f)
        for value in msg.get_all('from', []) + msg.get_all('to', []) + msg.get_all('cc', []):
            for display, addr in getaddresses([value]):
                if '@' in addr:
                    addresses.add(addr.lower())

with open('addresses.txt', 'w') as out:
    for a in sorted(addresses):
        out.write(a + '\n')

Because it reads real header fields, the list comes out clean, real addresses, lowercased and deduped, no lookalikes to weed out. Nothing leaves your computer either.

the.pst readpst -e.pst to .eml read headersFrom, To, Ccand dedupe cleanlist

readpst opens the PST, then a few lines of Python read the headers into a tidy list.

A tool, without the command line

If a terminal is not your thing, or the PST is large and you want one clean pass, a tool does the same read in a window. The PCDOTS PST Converter reads the .pst directly, without Outlook, lets you choose which fields to pull from, From, To, Cc and more, and writes a deduped address list you can save. It runs on Windows and has a free version that pulls the first ten so you can confirm it reads your file. Same reliable header read as the script, just with a preview and nothing to type.

1Run itOn Windows,open the menu 2Add .pstNo Outlookneeded 3AddressesFrom theExtract menu 4SaveA dedupedlist iReads the PST directly and pulls from the fields you choose, no terminal.

The tool route, a PST read straight into a deduped list of addresses.

Here are the tool steps with the screens.

Step 1. Install and run the software on Windows, then open the menu.

Run the PST email address extractor

Step 2. Choose PST files and add your .pst.

Select the PST file

Step 3. Open Extract and choose Email addresses.

Choose email addresses to extract

Step 4. Pick a destination and save the list.

The extracted email address list

For the conversion step on its own see convert PST to EML, and for the same job on a different store, extract email addresses from Thunderbird. To just look inside the PST first, our free PST viewer opens it without Outlook.

Free Download
Buy Now

Using the list responsibly

One honest word before you put the list to use. A file of addresses pulled from a mailbox is personal data, so gather it for a reason you can stand behind, tidying your own contacts, a migration, keeping business records, or answering a discovery or compliance request. Writing to people who already correspond with you is reasonable. Turning a mailbox into a marketing or cold-email list of people who never opted in is not, and in many places it breaks the rules on unsolicited email. Extract for your own legitimate use, and store the file somewhere safe.

The methods compared

Pick by your comfort with a terminal and the size of the mailbox.

Method Best for Good to know
readpst plus script Free, happy in a terminal Open source, no Outlook
PST Converter tool A large PST, no terminal Windows, pick the fields
Either way A clean deduped list Reliable, from real fields

Frequently asked questions

Where are email addresses stored in a PST?
In the header fields of every message, the From, To, Cc and Bcc lines. That is why extracting them is a clean, reliable read rather than a guess.

Can I extract email addresses from a PST without Outlook?
Yes. The open-source readpst and a dedicated PST converter both read the .pst directly, so Outlook does not need to be installed.

Is there a free way to do it?
Yes. Convert the PST to EML with readpst, then run a short Python script that reads the From, To and Cc headers and dedupes them into a list.

Will the list have false entries like a phone scan?
No. Addresses come from real header fields, not free text, so you get actual addresses rather than lookalikes. Deduplication keeps it tidy.

Can I choose which fields to pull from?
With the tool, yes, you can select From, To, Cc and others. The script pulls From, To and Cc as written, and you can add or remove headers in the code.

Is it legal to extract addresses from emails?
For your own records, a migration or a legitimate investigation, yes. Using them to cold-email people who never opted in can breach privacy and anti-spam rules.

A clean list you can trust

The reassuring part of this one is that you are not guessing. Because the addresses come straight from the header fields, both routes hand you real, deduplicated addresses, no lookalikes to second-guess, no gaps from odd formatting. Pick the free readpst and script if a terminal suits you, or the tool if you would rather point and click through a large mailbox, and either way the result is the same tidy list. Gather it for a reason you can stand behind, keep it somewhere safe, and you are set.

Shubham Dixit

Reviewed by Shubham Dixit

Independent Expert in Email Forensics and Data File Conversion. Shubham reviewed this guide for technical accuracy. He is an independent external reviewer and not an employee of PCDOTS.

Profile  |  LinkedIn