.. image:: https://github.com/koodaamo/tnefparse/workflows/CI/badge.svg?branch=master :target: https://github.com/koodaamo/tnefparse/actions?workflow=CI :alt: CI Status
This is a pure-python library for decoding Microsoft's Transport Neutral Encapsulation Format (TNEF), for Python
versions 3.6+ and PyPy3. The last version to support Python2 was 1.3.1. For more information on TNEF, see for example
wikipedia <http://en.wikipedia.org/wiki/Transport_Neutral_Encapsulation_Format>. The full TNEF specification
is also available as a
PDF download <https://interoperability.blob.core.windows.net/files/MS-OXTNEF/[MS-OXTNEF].pdf>.
tnefparse command-line utility is provided for listing contents of TNEF files, extracting attachments
found inside them and so on::
usage: tnefparse [-h][-o] [-a][-p PATH] [-b][-hb] [-l LEVEL][-c] file [file ...]
Extract TNEF file contents. Show this help message if no arguments are given.
positional arguments: file space-separated list of paths to the TNEF files
optional arguments: -h, --help show this help message and exit -o, --overview show (possibly long) overview of TNEF file contents -a, --attachments extract attachments, by default to current dir -z, --zip extract attachments into a single zip file, by default to current dir -p PATH, --path PATH optional explicit path to extract attachments to -b, --body extract the body to stdout -hb, --htmlbody extract the HTML body to stdout -rb, --rtfbody extract the RTF body to stdout -l LEVEL, --log LEVEL set log level to DEBUG, INFO, WARN or ERROR -c, --checksum calculate checksums (off by default) -d, --dump extract a json dump of the tnef contents
The library can also be used as a basis for applications that need to parse TNEF. To parse a TNEF attachment, run eg. :
from tnefparse import TNEF with open("tests/examples/one-file.tnef", "rb") as tneffile: ... tnefobj = TNEF(tneffile.read())
The parsed attachment contents are then available as TNEF object attributes:
Some of the above properties may be empty, depending on what's contained in the attachment that was parsed.
To run the test suite, all you need is tox_.
tox will run all tests on all supported Python versions.
If you want to run the tests only for e.g. Python 3.8, just enter
tox -e py38.
You also can run a subset of tests in a specific environment by invoking e.g.
tox -e py38 -- -k test_cmdline.
tox -e coverage you can generate a coverage report.
The output will be shown in the terminal and a HTML coverage report will be generated in the
Issues and pull requests welcome. Please however always provide an example TNEF file that can be used to demonstrate the bug or desired behavior, if at all possible.
Note: If you have understanding of TNEF and/or MIME internals or just need this package and want to help with maintaining it, I am open to giving you commit rights. Just let me know.
.. _tox: https://tox.readthedocs.io/
test_zipdeprecation warning for bytes (1nF0rmed)
TNEFinit raise ValueError on invalid TNEF signature, rather than calling sys.exit()
parseFileconvenience function should not expect a