Metadata-Version: 2.1
Name: tnefparse
Version: 1.4.0
Summary: a TNEF decoding library written in Python, without external dependencies
Home-page: https://github.com/koodaamo/tnefparse
Author: Petri Savolainen
Author-email: petri.savolainen@koodaamo.fi
License: LGPL
Description: tnefparse - TNEF decoding and attachment extraction
        ===================================================
        
        .. image:: https://github.com/koodaamo/tnefparse/workflows/CI/badge.svg?branch=master
           :target: https://github.com/koodaamo/tnefparse/actions?workflow=CI
           :alt: CI Status
        
        .. image:: https://codecov.io/gh/koodaamo/tnefparse/branch/master/graph/badge.svg
          :target: https://codecov.io/gh/koodaamo/tnefparse
        
        .. image:: https://img.shields.io/pypi/v/tnefparse.svg
          :target: https://pypi.org/project/tnefparse/
        
        .. image:: https://img.shields.io/pypi/pyversions/tnefparse.svg
          :target: https://pypi.org/project/tnefparse/
        
        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>`_.
        
        A :code:`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:
        
        * signature - TNEF file signature
        * key - generated by TNEF enabled transports before using the TNEF implementation to generate a TNEF stream
        * codepage - a Windows code page string
        * objects - a collection of `TNEFObject` instances
        * attachments - a collection of `TNEFAttachment` instances
        * mapiprops - a collection of MAPI properties represented by `TNEFMAPI_Attribute` instances
        * body - message body (may contain both HTML and RTF)
        * htmlbody - a string containing just the HTML message body 
        * rtfbody - just the RTF body
        
        Some of the above properties may be empty, depending on what's contained in the attachment that was parsed.
        
        Tests
        -----
        
        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`.
        
        With `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 `htmlcov` directory.
        
        Contributing
        ------------
        
        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/
        
        
        
        tnefparse 1.4.0 (2021-01-24)
        =============================
        
        - drop Python 2 support
        - drop Python 3.5 support (jugmac00)
        - add Python 3.9 support (jugmac00)
        - command-line support for zipped export of attachments (Beercow)
        - introduce using type annotations (jugmac00)
        - remove deprecated parseFile & raw_mapi functions
        - fix str representation for TNEF class (jugmac00)
        - prefer `getattr` over `eval` (eumiro)
        - fix `test_zip` deprecation warning for bytes (1nF0rmed)
        - correctly handle attachments of embedded objects (jrideout)
        - add expirimental support for parsing embedded message objects (jrideout)
        - zipped output now uses long filename when possible (jrideout)
        - run GitHub Actions CI for pull requests and once a week (eumiro)
        - use pathlib instead of os.path (eumiro)
        - change logger name for mapi to the package name (jrideout)
        - add unit tests for mapi attribute parsing (jrideout)
        - do not use Travis CI any more (jugmac00)
        
        
        tnefparse 1.3.1 (2020-09-30)
        =============================
        
        - heuristics to decode binary body and filenames when possible (jrideout)
        - JSON export for TNEF contents tnefparse (jrideout)
        - add support for Python 3.8 (jugmac00)
        - modernize package and test setup (jugmac00)
        - apply Flake8 on the code and enforce rules on CI (jugmac00)
        
        tnefparse 1.3.0 (2018-12-01)
        =============================
        
        - drop Python 2.6 & 3.3 support
        - Python 2/3 compatibility fixes
        - more tests & example files (jrideout)
        - overall improved testing & start tracking coverage
        - lots of parsing improvements (jrideout)
        - turn some unnecessary warnings into debug messages
        - add tnefparse -p | --path option for setting attachment extraction path
        - support more MAPI (PidTag) properties (jrideout)
        - support RTF body extraction (jrideout)
        - support extracting top level object attributes in msgprops (jrideout)
        - util.raw_mapi & tnefparse.parseFile functions will be deprecated after 1.3
        
        tnefparse 1.2.3, 2018-11-14
        ============================
        
        - misc. fixes
        
        tnefparse 1.2.2, 2017
        ======================
        
        - have `TNEF` init raise ValueError on invalid TNEF signature, rather than calling sys.exit()
        - `parseFile` convenience function should not expect a `self` parameter, removed
        - other misc. fixes
        
        tnefparse 1.2.1, 2013
        ======================
        
        - Python 3 compatibility; tests pass on Python 2.6/2.7/3.2/3.3
        - add package to travis ci
        - add tox.ini for testing using https://testrun.org/tox
        
        tnefparse 1.2, 2013
        ===================
        
        - performance improvements & bug fixes (Dave Baggett)
        - added to_zip function for converting TNEF attachments into ZIPped ones (Dave Baggett)
        - tnefparse is now used in the inky email client from Arcode
        
        tnefparse 1.1.1, 08/2012 (unreleased)
        =====================================
        
        - fixed entry point bug that caused 'tnefparse' cmd-line invocation to fail
        
        tnefparse 1.1, 03/2012
        =======================
        
        - Repackaged and renamed the library
        - Code moved to github
        - Use the stdlib logging module
        - Further bug fixes and enhancements to pure-python code
        - Add a command-line script
        - Drop the unix tnef command-line tool wrapper
        
        pytnef 0.2.1-Novell, circa 2010
        ================================
        
        - Bug fixes/enhancements to pure-python code (Tom Doman)
        
        pytnef 0.2, circa 2005
        ======================
        
        - Added a wrapper for the unix tnef command-line tool (Petri Savolainen)
        - Pure-python code not very useful yet
        
        pytnef 0.1 - circa 2005
        =======================
        
        - First version (pure-python) created as a conversion of a Ruby TNEF decoder
          by Trevor Scheroeder (Petri Savolainen)
        
Keywords: TNEF MAPI decoding mail email microsoft
Platform: UNKNOWN
Classifier: Topic :: Communications :: Email
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Provides-Extra: optional
