Skip to main content
mbox-extractor

mbox-extractor

License Python

📬 Recursively extract all attachments from .mbox email archives with a single command

Features

  • Recursive scanning - Finds all .mbox files in any directory tree
  • Safe filenames - Sanitizes attachment names, removing illegal characters
  • No duplicates - Uses content-based hashing to prevent overwrites
  • Progress display - Visual progress bar for large mailboxes

Quick Start

uv tool install mbox-extractor
mbox-extractor /path/to/emails

Installation

Using uv (recommended)

uv tool install mbox-extractor

Using pip

pip install mbox-extractor

From source

git clone https://github.com/tsilva/mbox-extractor.git
cd mbox-extractor
uv tool install .
pre-commit install

Usage

Extract all attachments from .mbox files under a directory:

mbox-extractor /path/to/search

Attachments from each .mbox file are saved to a folder with the same name:

Found mbox: /emails/archive.mbox -> extracting to /emails/archive
Extracting archive.mbox: 100%|████████████████████| 500/500 [00:10<00:00, 48.5it/s]
Extracted 42 attachments to '/emails/archive'.

How It Works

  1. Recursively scans the given path for .mbox files
  2. Opens each mailbox and iterates through all messages
  3. Extracts attachments with sanitized, unique filenames
  4. Saves them to a folder named after the source .mbox file

Filenames are made unique by appending an 8-character MD5 hash of the file content, preventing overwrites when multiple attachments share the same name.

Programmatic Usage

You can also use mbox-extractor as a library in your Python code:

from mbox_extractor import extract_mbox

# Extract with default output directory (creates /path/to/archive/ from /path/to/archive.mbox)
count = extract_mbox("/path/to/archive.mbox")

# Extract to a custom output directory
count = extract_mbox("/path/to/archive.mbox", output_dir="/custom/output")

# Extract without progress bar (for scripts/automation)
count = extract_mbox("/path/to/archive.mbox", show_progress=False)

API

extract_mbox(mbox_path: str, output_dir: str | None = None, show_progress: bool = True) -> int
Parameter Description
mbox_path Absolute path to the .mbox file
output_dir Output directory (default: same name as mbox file, without extension)
show_progress Show progress bar (default: True)
Returns Number of attachments extracted

Requirements

  • Python 3.12+
  • tqdm (installed automatically)

License

MIT

Metadata

Release files for mbox-extractor 0.1.21

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mbox-extractor 0.1.21
File Size Uploaded Provenance Actions
mbox_extractor-0.1.21.tar.gz 169.4 kB With provenance Details for mbox_extractor-0.1.21.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mbox-extractor 0.1.21
File Interpreter ABI Platform Actions
mbox_extractor-0.1.21-py3-none-any.whl Python 3 none any Details for mbox_extractor-0.1.21-py3-none-any.whl

Total release size: 175.0 kB

Release files / mbox_extractor-0.1.21.tar.gz

Download URL mbox_extractor-0.1.21.tar.gz
Size 169.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c7def72383345177f0846aabf63a76a10be8ba2c94cbf91cc73a306d78d18118
BLAKE2b-256 checksum
How to use checksums
db99c8dbd50cbe488d14baf1e23d6849702b06409318842d061a3270e9c3a3bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 3, 2026.

Transparency log

Release files / mbox_extractor-0.1.21-py3-none-any.whl

Download URL mbox_extractor-0.1.21-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f58171ced9f5c42201c1655425601b368e03e186f3703040dd08a101247b4c56
BLAKE2b-256 checksum
How to use checksums
cb8de8dab49288c39954f37d03f34fe6976d51ab29b5880654906f245c90ef30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 3, 2026.

Transparency log

Security for mbox-extractor 0.1.21

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mbox_extractor-0.1.21.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 3, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page