{ "info": { "author": "Petri Savolainen", "author_email": "petri.savolainen@koodaamo.fi", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Communications :: Email" ], "description": "tnefparse - TNEF decoding and attachment extraction\n===================================================\n\n.. image:: https://badge.fury.io/py/tnefparse.png\n :target: http://badge.fury.io/py/tnefparse\n\n.. image:: https://travis-ci.org/koodaamo/tnefparse.png?branch=master\n :target: https://travis-ci.org/koodaamo/tnefparse\n\n.. image:: https://codecov.io/gh/koodaamo/tnefparse/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/koodaamo/tnefparse\n\nThis is a pure-python library for decoding Microsoft's Transport Neutral Encapsulation Format (TNEF), for Python\nversions 2.7, 3.5+ and PyPy. For more information on TNEF, see for example \n`wikipedia `_. The full TNEF specification\nis also available as a `PDF download `_.\n\nA :code:`tnefparse` command-line utility is provided for listing contents of TNEF files, extracting attachments\nfound inside them and so on::\n\n usage: tnefparse [-h] [-o] [-a] [-p PATH] [-b] [-hb]\n [-l LEVEL] [-c]\n file [file ...]\n\n Extract TNEF file contents. Show this help message if no arguments are given.\n\n positional arguments:\n file space-separated list of paths to the TNEF files\n\n optional arguments:\n -h, --help show this help message and exit\n -o, --overview show (possibly long) overview of TNEF file contents\n -a, --attachments extract attachments, by default to current dir\n -p PATH, --path PATH optional explicit path to extract attachments to\n -b, --body extract the body to stdout\n -hb, --htmlbody extract the HTML body to stdout\n -rb, --rtfbody extract the RTF body to stdout\n -l LEVEL, --log LEVEL set log level to DEBUG, INFO, WARN or ERROR\n -c, --checksum calculate checksums (off by default)\n\nThe library can also be used as a basis for applications that need to parse TNEF. To parse a TNEF attachment, run eg. :\n\n>>> from tnefparse import TNEF\n>>> with open(\"tests/examples/one-file.tnef\", \"rb\") as tneffile:\n... tnefobj = TNEF(tneffile.read())\n\nThe parsed attachment contents are then available as TNEF object attributes:\n\n* signature - TNEF file signature\n* key - generated by TNEF enabled transports before using the TNEF implementation to generate a TNEF stream\n* codepage - a Windows code page string\n* objects - a collection of `TNEFObject` instances\n* attachments - a collection of `TNEFAttachment` instances\n* mapiprops - a collection of MAPI properties represented by `TNEFMAPI_Attribute` instances\n* body - message body (may contain both HTML and RTF)\n* htmlbody - a string containing just the HTML message body \n* rtfbody - just the RTF body\n\nSome of the above properties may be empty, depending on what's contained in the attachment that was parsed.\n\nUse :code:`python setup.py test` to run the tests.\n\nIssues 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.\n\n**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.**\n\n\n\n\ntnefparse 1.3.0 (2018-12-01)\n=============================\n\n- drop Python 2.6 & 3.3 support\n- Python 2/3 compatibility fixes\n- more tests & example files (jrideout)\n- overall improved testing & start tracking coverage\n- lots of parsing improvements (jrideout)\n- turn some unnecessary warnings into debug messages\n- add tnefparse -p | --path option for setting attachment extraction path\n- support more MAPI (PidTag) properties (jrideout)\n- support RTF body extraction (jrideout)\n- support extracting top level object attributues in msgprops (jrideout)\n- util.raw_mapi & tnefparse.parseFile functions will be deprecated after 1.3\n\ntnefparse 1.2.3, 2018-11-14\n============================\n\n- misc. fixes\n\ntnefparse 1.2.2, 2017\n======================\n\n- have `TNEF` init raise ValueError on invalid TNEF signature, rather than calling sys.exit()\n- `parseFile` convenience function should not expect a `self` parameter, removed\n- other misc. fixes\n\ntnefparse 1.2.1, 2013\n======================\n\n- Python 3 compatibility; tests pass on Python 2.6/2.7/3.2/3.3\n- add package to travis ci\n- add tox.ini for testing using https://testrun.org/tox\n\ntnefparse 1.2, 2013\n===================\n\n- performance improvements & bug fixes (Dave Baggett)\n- added to_zip function for converting TNEF attachments into ZIPped ones (Dave Baggett)\n- tnefparse is now used in the inky email client from Arcode\n\ntnefparse 1.1.1, 08/2012 (unreleased)\n=====================================\n\n- fixed entry point bug that caused 'tnefparse' cmd-line invocation to fail\n\ntnefparse 1.1, 03/2012\n=======================\n\n- Repackaged and renamed the library\n- Code moved to github\n- Use the stdlib logging module\n- Further bug fixes and enhancements to pure-python code\n- Add a command-line script\n- Drop the unix tnef command-line tool wrapper\n\npytnef 0.2.1-Novell, circa 2010\n================================\n\n- Bug fixes/enhancements to pure-python code (Tom Doman)\n\npytnef 0.2, circa 2005\n======================\n\n- Added a wrapper for the unix tnef command-line tool (Petri Savolainen)\n- Pure-python code not very useful yet\n\npytnef 0.1 - circa 2005\n=======================\n\n- First version (pure-python) created as a conversion of a Ruby TNEF decoder\n by Trevor Scheroeder (Petri Savolainen)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/koodaamo/tnefparse", "keywords": "TNEF MAPI decoding mail email microsoft", "license": "LGPL", "maintainer": "", "maintainer_email": "", "name": "tnefparse", "package_url": "https://pypi.org/project/tnefparse/", "platform": "", "project_url": "https://pypi.org/project/tnefparse/", "project_urls": { "Homepage": "https://github.com/koodaamo/tnefparse" }, "release_url": "https://pypi.org/project/tnefparse/1.3.0/", "requires_dist": null, "requires_python": "", "summary": "a TNEF decoding library written in python, without external dependencies", "version": "1.3.0" }, "last_serial": 4550620, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "7deb9cd5efd4dec64a921ea0c697d746", "sha256": "89966e0d81a5225638d92394cf8d9b7e5a9563e2d4cb8a4ae09569d12160b730" }, "downloads": -1, "filename": "tnefparse-1.0.zip", "has_sig": false, "md5_digest": "7deb9cd5efd4dec64a921ea0c697d746", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 169241, "upload_time": "2012-05-10T14:51:56", "url": "https://files.pythonhosted.org/packages/d0/15/f7313d10ebdd0dc408711fb51fd64cea0c326e974d3d681737fc8a56fa89/tnefparse-1.0.zip" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "343597c03513eaa5a334a0aaad3d1161", "sha256": "ebfdb7aeb5bd50cf67b3e7ca397b17cbb779a0dc60fc38eaa8110ddcec681bc1" }, "downloads": -1, "filename": "tnefparse-1.1.zip", "has_sig": false, "md5_digest": "343597c03513eaa5a334a0aaad3d1161", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 169244, "upload_time": "2012-05-10T14:56:35", "url": "https://files.pythonhosted.org/packages/52/e6/2a4a445324abcafe3551beab1e2375320cc3cf07ef35ee99e9145c124c83/tnefparse-1.1.zip" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "26a7f7a4f4a6584c18d23865252e2f6a", "sha256": "8096faed63f776d24697da13405db29046030cd766c692b9345f3c399cf12db7" }, "downloads": -1, "filename": "tnefparse-1.2.zip", "has_sig": false, "md5_digest": "26a7f7a4f4a6584c18d23865252e2f6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 172923, "upload_time": "2013-02-16T12:21:27", "url": "https://files.pythonhosted.org/packages/cc/32/e54652c6c20b1135892123bf166cbd7d88121c4df97f33281db0de69df26/tnefparse-1.2.zip" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "036150e954e2af16557a92b6dbc732b4", "sha256": "d5335a4a4fb31c3685be6cb93696d8d8b423f949979676290a63ea5b2397747e" }, "downloads": -1, "filename": "tnefparse-1.2.2.zip", "has_sig": false, "md5_digest": "036150e954e2af16557a92b6dbc732b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174533, "upload_time": "2017-04-20T05:25:47", "url": "https://files.pythonhosted.org/packages/e0/2c/982fa7853de691d7131a17a4de105095b0b7967b3361cf7bfe5a7c5ac260/tnefparse-1.2.2.zip" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "80a5a5b5a209ba0f89001e186ed10a63", "sha256": "c320e1c66494450c74bb185d28e1f6a9df6d5c4764f5a0618f1dddc6caad3c04" }, "downloads": -1, "filename": "tnefparse-1.2.3-py2.7.egg", "has_sig": false, "md5_digest": "80a5a5b5a209ba0f89001e186ed10a63", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 35631, "upload_time": "2018-11-14T20:31:14", "url": "https://files.pythonhosted.org/packages/37/f4/71e8296e313384fd1f36c8c8d3259957078ba405a0529d6da7d6d446b1d8/tnefparse-1.2.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3d634008290cada0c659992220250296", "sha256": "d0a4319ec33f557cdc977a499e4b8bd52a9b2bf69457de25d63ee56e2ebf8fc9" }, "downloads": -1, "filename": "tnefparse-1.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3d634008290cada0c659992220250296", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19961, "upload_time": "2018-11-14T20:30:38", "url": "https://files.pythonhosted.org/packages/27/8e/15975b2aaa8a65f6a05254b69f2283f017b883cab9594fff4e0d17c83a5e/tnefparse-1.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e8a8b1223334ed9482d5ae35e8a0b66", "sha256": "c7d2f64e4a07a14087d960c6b897432f26358f613c76b76c9fd5037546e5dab9" }, "downloads": -1, "filename": "tnefparse-1.2.3.tar.gz", "has_sig": false, "md5_digest": "9e8a8b1223334ed9482d5ae35e8a0b66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17148, "upload_time": "2018-11-14T20:30:09", "url": "https://files.pythonhosted.org/packages/22/de/21a65caa80e891e9b64ec27705094248d98f7b6ade63badafef59d70c8e9/tnefparse-1.2.3.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "917b048a8e37c7f2930f1b190fd61585", "sha256": "da061e0c893fc22f53d0597ec3b72dd8480f9372d841c60b6549582d7449043a" }, "downloads": -1, "filename": "tnefparse-1.3.0-py2.7.egg", "has_sig": true, "md5_digest": "917b048a8e37c7f2930f1b190fd61585", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 44858, "upload_time": "2018-12-01T17:36:30", "url": "https://files.pythonhosted.org/packages/be/ce/afc22fb907985faf3e63f35c87e9e9880b487e51d874ba9d47432aa415c8/tnefparse-1.3.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "a6b07bf55dee788388fcddcf7eaf9460", "sha256": "86f001f05f32c1ee29429cab1f2c2d717ca5bb9b8dc1eb44dee09ae9ff028977" }, "downloads": -1, "filename": "tnefparse-1.3.0-py2-none-any.whl", "has_sig": true, "md5_digest": "a6b07bf55dee788388fcddcf7eaf9460", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 24345, "upload_time": "2018-12-01T16:52:07", "url": "https://files.pythonhosted.org/packages/e2/f8/21176bdf1a4baa45c662fe0d2cfbb53bba66b3f4bb7bb710dd1391e98686/tnefparse-1.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd6eaa083993f1adafecafe60a670f02", "sha256": "e83ef45ce22b61c900d53ce57fd3031007c899f89a96943f838f2423d3d3a14b" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3.5.egg", "has_sig": true, "md5_digest": "bd6eaa083993f1adafecafe60a670f02", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 45067, "upload_time": "2018-12-01T17:29:49", "url": "https://files.pythonhosted.org/packages/08/c1/8555befb27fe59b55d37e296563f83722923a55848e4f3dbfac3a793cffd/tnefparse-1.3.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "847b0bbfe303cdb3c9a38b8078ad6ac4", "sha256": "065e7ad2b4949cda68db9f9286ac796f136396b06654d2a9dd790067a1ed59b3" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3.6.egg", "has_sig": true, "md5_digest": "847b0bbfe303cdb3c9a38b8078ad6ac4", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 44090, "upload_time": "2018-12-01T17:30:10", "url": "https://files.pythonhosted.org/packages/1f/cf/3d61f8e69a0b1c60cb538eef033ccecec43c1aac0895bd0651c72a631802/tnefparse-1.3.0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "2f0c9967caaee3b7ee508af30c9dbf2a", "sha256": "ce3305c9c85b5d42534ce572267f8586d0cfe2d5c57fd63fc2209e3e05c66be7" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3.7.egg", "has_sig": true, "md5_digest": "2f0c9967caaee3b7ee508af30c9dbf2a", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 44158, "upload_time": "2018-12-01T17:30:36", "url": "https://files.pythonhosted.org/packages/40/cd/d491f41f9e0a0c949261f766e646fa9fa461161984724c859488b09d835f/tnefparse-1.3.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "5bbfe9d2eb0f3a5965d1dd4c3653d9d3", "sha256": "47d793c7e63333dd99425c4d1b110900707a3b70d8f4193eee06cef322f93e28" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3-none-any.whl", "has_sig": true, "md5_digest": "5bbfe9d2eb0f3a5965d1dd4c3653d9d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24344, "upload_time": "2018-12-01T16:55:46", "url": "https://files.pythonhosted.org/packages/ab/eb/d736cf5183c811622ef7d51b1be9f578b98f3a6b624c6de09d13095acbf9/tnefparse-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a54415a3a847fa8aca436b80d2f52af", "sha256": "46be01e4176cdcd42b51abf0c145ff946fb1b25fb5c989c51f82675efcecdf69" }, "downloads": -1, "filename": "tnefparse-1.3.0.tar.gz", "has_sig": true, "md5_digest": "5a54415a3a847fa8aca436b80d2f52af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2388554, "upload_time": "2018-12-01T16:54:24", "url": "https://files.pythonhosted.org/packages/a0/86/998f8525aee2eabd134475015d2995cdf1c55f5c39c9b529656ae9647325/tnefparse-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "917b048a8e37c7f2930f1b190fd61585", "sha256": "da061e0c893fc22f53d0597ec3b72dd8480f9372d841c60b6549582d7449043a" }, "downloads": -1, "filename": "tnefparse-1.3.0-py2.7.egg", "has_sig": true, "md5_digest": "917b048a8e37c7f2930f1b190fd61585", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 44858, "upload_time": "2018-12-01T17:36:30", "url": "https://files.pythonhosted.org/packages/be/ce/afc22fb907985faf3e63f35c87e9e9880b487e51d874ba9d47432aa415c8/tnefparse-1.3.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "a6b07bf55dee788388fcddcf7eaf9460", "sha256": "86f001f05f32c1ee29429cab1f2c2d717ca5bb9b8dc1eb44dee09ae9ff028977" }, "downloads": -1, "filename": "tnefparse-1.3.0-py2-none-any.whl", "has_sig": true, "md5_digest": "a6b07bf55dee788388fcddcf7eaf9460", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 24345, "upload_time": "2018-12-01T16:52:07", "url": "https://files.pythonhosted.org/packages/e2/f8/21176bdf1a4baa45c662fe0d2cfbb53bba66b3f4bb7bb710dd1391e98686/tnefparse-1.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd6eaa083993f1adafecafe60a670f02", "sha256": "e83ef45ce22b61c900d53ce57fd3031007c899f89a96943f838f2423d3d3a14b" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3.5.egg", "has_sig": true, "md5_digest": "bd6eaa083993f1adafecafe60a670f02", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 45067, "upload_time": "2018-12-01T17:29:49", "url": "https://files.pythonhosted.org/packages/08/c1/8555befb27fe59b55d37e296563f83722923a55848e4f3dbfac3a793cffd/tnefparse-1.3.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "847b0bbfe303cdb3c9a38b8078ad6ac4", "sha256": "065e7ad2b4949cda68db9f9286ac796f136396b06654d2a9dd790067a1ed59b3" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3.6.egg", "has_sig": true, "md5_digest": "847b0bbfe303cdb3c9a38b8078ad6ac4", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 44090, "upload_time": "2018-12-01T17:30:10", "url": "https://files.pythonhosted.org/packages/1f/cf/3d61f8e69a0b1c60cb538eef033ccecec43c1aac0895bd0651c72a631802/tnefparse-1.3.0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "2f0c9967caaee3b7ee508af30c9dbf2a", "sha256": "ce3305c9c85b5d42534ce572267f8586d0cfe2d5c57fd63fc2209e3e05c66be7" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3.7.egg", "has_sig": true, "md5_digest": "2f0c9967caaee3b7ee508af30c9dbf2a", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 44158, "upload_time": "2018-12-01T17:30:36", "url": "https://files.pythonhosted.org/packages/40/cd/d491f41f9e0a0c949261f766e646fa9fa461161984724c859488b09d835f/tnefparse-1.3.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "5bbfe9d2eb0f3a5965d1dd4c3653d9d3", "sha256": "47d793c7e63333dd99425c4d1b110900707a3b70d8f4193eee06cef322f93e28" }, "downloads": -1, "filename": "tnefparse-1.3.0-py3-none-any.whl", "has_sig": true, "md5_digest": "5bbfe9d2eb0f3a5965d1dd4c3653d9d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24344, "upload_time": "2018-12-01T16:55:46", "url": "https://files.pythonhosted.org/packages/ab/eb/d736cf5183c811622ef7d51b1be9f578b98f3a6b624c6de09d13095acbf9/tnefparse-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a54415a3a847fa8aca436b80d2f52af", "sha256": "46be01e4176cdcd42b51abf0c145ff946fb1b25fb5c989c51f82675efcecdf69" }, "downloads": -1, "filename": "tnefparse-1.3.0.tar.gz", "has_sig": true, "md5_digest": "5a54415a3a847fa8aca436b80d2f52af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2388554, "upload_time": "2018-12-01T16:54:24", "url": "https://files.pythonhosted.org/packages/a0/86/998f8525aee2eabd134475015d2995cdf1c55f5c39c9b529656ae9647325/tnefparse-1.3.0.tar.gz" } ] }