Skip to main content

MIT License on PyPI Python 3.9+

python-oxmsg

Parse Outlook MSG (.msg) files to extract email messages and attachments.

The target use case is extracting Outlook message text and accessing attachments. There is no support for modifying messages or creating them from scratch. In addition to message text, other message properties such as sent-date, etc. are also accessible.

Documentation

Documentation for this project is on GitHub Pages.

Installation

pip install python-oxmsg

Occasionally it can be useful to install from a GitHub branch, perhaps to try out a version that has not yet been released. This command would install from the develop branch:

pip install git+https://github.com/scanny/python-oxmsg@develop

Usage

>>> from oxmsg import Message
>>> msg = Message.load("message.msg")
>>> msg.message_class
'IPM.Note'
>>> msg.attachment_count
1
>>> attachment = msg.attachments[0]
>>> attachment.attached_by_value  # -- attachment bytes only available when True --
True
>>> attachment.file_name
'q1-objectives.pptx'
>>> attachment.mime_type
'application/vnd.openxmlformats-officedocument.presentationml.presentation'
>>> attachment.size
96407
>>> attachment.last_modified.isoformat()
'2023-11-18T16:08:17+00:00'
>>> with open(attachment.file_name, "wb") as f:
...     f.write(attachment.file_bytes)

CLI

python-oxmsg includes a CLI that may be useful for diagnostic purposes.

$ oxmsg
Usage: oxmsg [OPTIONS] COMMAND [ARGS]...

  Utility CLI for `python-oxmsg`.

  Provides the subcommands listed below, useful for exploratory or diagnostic
  purposes.

Options:
  --help  Show this message and exit.

Commands:
  dump     Write a summary of the MSG file's properties to stdout.
  storage  Summarize low-level "directories and files" structure of MSG...

The dump sub-command displays all properties available in the message along with the PID and PTYP information required to access those properties from a Properties object.

$ oxmsg dump message.msg

------------------
Message Properties
------------------

header-properties
-----------------
recipient_count:    1

distinguished-properties
------------------------
attachment_count:         0
internet_code_page:       utf-8
message_class:            IPM.Note
sender:                   from@domain.com
...

other properties
-----------------------------------------+---------------+--------------------
property-id                              | type          | value
-----------------------------------------+---------------+--------------------
0x0017 - PidTagImportance                | PtypInteger32 | 00 00 00 01
0x001A - PidTagMessageClass              | PtypString8   | 'IPM.Note'
0x0036 - PidTagSensitivity               | PtypInteger32 | 00 00 00 00
0x0037 - PidTagSubject                   | PtypString8   | 'A test message'
0x003B - PidTagSentRepresentingSearchKey | PtypBinary    | 21 bytes
0x003D - PidTagSubjectPrefix             | PtypString8   | ''
0x0042 - PidTagSentRepresentingName      | PtypString8   | 'from@domain.com'
...

Changelog

The release history including a chronicle of notable changes with each release is recorded in CHANGELOG.md.

Metadata

Release files for python-oxmsg 0.0.2

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

Source distribution (sdist)

Source distribution for python-oxmsg 0.0.2
File Size Uploaded
python_oxmsg-0.0.2.tar.gz 34.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-oxmsg 0.0.2
File Interpreter ABI Platform
python_oxmsg-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 66.2 kB

Release files / python_oxmsg-0.0.2.tar.gz

Download URL python_oxmsg-0.0.2.tar.gz
Size 34.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a6aff4deb1b5975d44d49dab1d9384089ffeec819e19c6940bc7ffbc84775fad
BLAKE2b-256 checksum
How to use checksums
a24e869f34faedbc968796d2c7e9837dede079c9cb9750917356b1f1eda926e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Release files / python_oxmsg-0.0.2-py3-none-any.whl

Download URL python_oxmsg-0.0.2-py3-none-any.whl
Size 31.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22be29b14c46016bcd05e34abddfd8e05ee82082f53b82753d115da3fc7d0355
BLAKE2b-256 checksum
How to use checksums
5367f56c69a98c7eb244025845506387d0f961681657c9fcd8b2d2edd148f9d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

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