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. The email addresses in an EML file sit in its headers, the From, To and Cc lines. To extract them, you read those headers across your EML files and collect the addresses into a list. For a few files you can copy them by hand, and for a folder full, a script or an extractor tool pulls them all, dedupes, and saves the list.
On this page
Where the addresses live?
This is the useful bit to grasp first. An EML file is one email in plain text, and the addresses are not hidden, they sit in the headers at the top, the From, To, Cc and sometimes Reply-To lines. Extracting addresses from your EML files is really just reading those lines across all your files and gathering the addresses into one list.
That is handy when you want to rebuild a contact list from an old archive, pull together everyone who ever wrote to a project, or feed a clean list into a CRM. For a handful of files you can do it by hand, for a folder full you script it or use a tool, and either way you finish by removing duplicates.
The addresses sit in the header lines, extracting is collecting them.
“The extraction itself is the easy half, the addresses are right there in the From, To and Cc headers of every EML. The half people underestimate is the cleanup. Across a few hundred messages the same senders repeat constantly, so a raw pull gives you a list that is mostly duplicates. Whatever method you use, the value is in deduping down to the unique addresses, that is the list you actually wanted.” Shubham Dixit, Email Forensics reviewer (draft, pending approval)
By hand, for a few files
If you only have a few EML files, no tool is needed. The free route uses Thunderbird, which reads EML directly.
Open the EML. Drag your EML files into Thunderbird, or use the free ImportExportTools NG add-on to import a whole folder at once.
View the source and copy. Open a message, right-click and choose View Source, and read the From, To and Cc lines. Copy the addresses into a text file or spreadsheet. It is simple, just slow once you have more than a handful of files.
With a script, for a folder
For a whole folder of EML, and if you are comfortable with a little code, a short script is the free way to do it in bulk. Because EML is plain text, the addresses are easy to read out.
In Python, the built in email module parses each file’s headers so you can read From, To and Cc cleanly, or a simple regular expression can match every address in the text. Loop over the folder, gather the addresses, drop duplicates with a set, and write the result to a CSV. It is a dozen or so lines and it handles thousands of files. If code is not your thing, the tool below does the same job without any.
The real work is deduping
Whichever route you take, the last step matters most. Pull addresses from a few hundred emails and the same senders appear again and again, so the raw result is mostly repeats. A clean extraction removes the duplicates and leaves you a list of unique addresses, which is the list you were actually after. A script does this with a set, and a good tool does it for you.
The raw pull is full of repeats, deduping is what gives you the list.
In bulk, an extractor
If you have a lot of EML and would rather not script, an extractor does the whole job in a few clicks. It scans a folder of EML, reads the address fields you choose, dedupes, and saves the list. The PCDOTS EML Converter loads EML files or a whole folder and its Extract Email Addresses option pulls the addresses from the From, To and Cc fields you select, then writes them to a text list you can open in a spreadsheet. It runs on Windows and does not need Thunderbird or Outlook. A free version handles the first ten items per folder so you can test it first.
The tool route, for a folder of EML without any scripting.
Here are the steps with the screens.
Step 1. Install and run the software on Windows, then open the menu.

Step 2. Choose Email Data Files, EML, and add your files or folder.

Step 3. Open Export and choose Email Addresses, then pick the fields.

Step 4. Choose a folder on your computer and Save the list.

For a related job see our guide to extract attachments from EML files, and for the same task in other formats, extract email addresses from PDF and extract email addresses from DBX.
The methods compared
Match the route to how many EML files you have and whether you code.
| Method | Best for | Good to know |
|---|---|---|
| Thunderbird, view source | A few files, free | Copy by hand, dedupe yourself |
| A short script | A folder, free, if you code | Python email module, dedupe to CSV |
| EML extractor tool | Bulk, no scripting | Windows, pick fields, saves a list |
Frequently asked questions
Where are the email addresses in an EML file?
In the headers at the top, the From, To, Cc and Reply-To lines. Extracting addresses means reading those lines and collecting them.
How do I extract addresses from EML files for free?
For a few files, open them in Thunderbird, view the source, and copy the From, To and Cc addresses. For a folder, a short Python script reads the headers and writes a deduplicated CSV.
Can I extract only the sender addresses?
Yes. By hand you just read the From line, and a script or the tool can filter to From only, so you get senders without the To and Cc addresses.
How do I extract from hundreds of EML files at once?
Use a script over the folder, or an extractor tool that scans the folder, reads the fields you choose, dedupes, and saves one list.
Will the duplicates be removed?
They should be. Senders repeat across a mailbox, so a good extraction dedupes to unique addresses. A script uses a set, and the tool dedupes for you.
Does extracting change my EML files?
No. Every method here only reads the files and copies the addresses out. The original EML files are left untouched.
Turn your EML files into a clean address list
The addresses are already sitting in your EML files, in the From, To and Cc lines, so this comes down to gathering them and cutting the duplicates. For a few files, open them in Thunderbird and copy the lines. For a folder and a bit of code, a short script reads the headers and writes a deduplicated CSV. For a lot of files and no scripting, point the extractor at the folder, pick your fields, and let it save the list. Download the tool, run it against your EML folder, and you will have your clean list of unique addresses in a couple of minutes.