Skip to main content

Extract attachments from Outlook .msg files.

Project description

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.filename
'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.filename, "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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_oxmsg-0.0.1.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

python_oxmsg-0.0.1-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

Details for the file python_oxmsg-0.0.1.tar.gz.

File metadata

  • Download URL: python_oxmsg-0.0.1.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for python_oxmsg-0.0.1.tar.gz
Algorithm Hash digest
SHA256 b65c1f93d688b85a9410afa824192a1ddc39da359b04a0bd2cbd3874e84d4994
MD5 89cb43237cb032b636906af08cbdbd1b
BLAKE2b-256 4fd44ec721fd433453fe05344f41f17458775d111e9f6c668ce1a0fccec0fecd

See more details on using hashes here.

File details

Details for the file python_oxmsg-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for python_oxmsg-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8ea7d5dda1bc161a413213da9e18ed152927c1fda2feaf5d1f02192d8ad45eea
MD5 d425c88a20c742a2e196c9dfcf925a9b
BLAKE2b-256 d4c8fb23e1e7723ba9200b75bc121f22f67498ae098a202f1646acc4f6a54f5c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page