跳转到主要内容

一个用Python编写的、没有外部依赖的TNEF解码库

项目描述

tnefparse - TNEF解码和附件提取

CI Status https://codecov.io/gh/koodaamo/tnefparse/branch/master/graph/badge.svg https://img.shields.io/pypi/v/tnefparse.svg https://img.shields.io/pypi/pyversions/tnefparse.svg

这是一个适用于Python 3.6+和PyPy3的纯Python库,用于解码微软的传输中立封装格式(TNEF)。支持Python 2的最后一个版本是1.3.1。有关TNEF的更多信息,请参阅例如维基百科。完整的TNEF规范也可作为PDF下载

提供了一个名为tnefparse的命令行工具,用于列出TNEF文件的内容,提取其中的附件等

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

此库也可以用作需要解析TNEF的应用程序的基础。要解析TNEF附件,运行例如

>>> from tnefparse import TNEF
>>> with open("tests/examples/one-file.tnef", "rb") as tneffile:
...    tnefobj = TNEF(tneffile.read())

解析后的附件内容作为TNEF对象的属性可用

  • signature - TNEF文件签名

  • key - 在使用TNEF实现生成TNEF流之前由TNEF启用传输生成的键

  • codepage - Windows代码页字符串

  • objects - TNEFObject实例的集合

  • attachments - TNEFAttachment实例的集合

  • mapiprops - 由TNEFMAPI_Attribute实例表示的MAPI属性的集合

  • body - 消息正文(可能包含HTML和RTF)

  • htmlbody - 仅包含HTML消息正文的字符串

  • rtfbody - 仅包含 RTF 主体

上述属性中的一些可能为空,具体取决于解析的附件内容。

测试

要运行测试套件,您只需要 toxtox 将在所有支持的 Python 版本上运行所有测试。

如果您只想为例如 Python 3.8 运行测试,只需输入 tox -e py38

您也可以通过调用例如 tox -e py38 – -k test_cmdline 在特定环境中运行测试子集。

使用 tox -e coverage 可以生成覆盖率报告。输出将显示在终端,并在 htmlcov 目录中生成 HTML 覆盖率报告。

贡献

欢迎问题和拉取请求。 但是,请始终提供示例 TNEF 文件,该文件可以用来演示错误或期望的行为,如果可能的话。

注意:如果您了解 TNEF 和/或 MIME 内部结构,或者只是需要此软件包并想帮助维护它,我愿意授予您提交权限。请告诉我。

tnefparse 1.4.0 (2021-01-24)

  • 删除 Python 2 支持

  • 删除 Python 3.5 支持 (jugmac00)

  • 添加 Python 3.9 支持 (jugmac00)

  • 添加命令行支持,以压缩导出附件 (Beercow)

  • 引入使用类型注解 (jugmac00)

  • 删除过时的 parseFile & raw_mapi 函数

  • 修复 TNEF 类的 str 表示形式 (jugmac00)

  • 优先使用 getattr 而不是 eval (eumiro)

  • 修复 test_zip 对于字节的弃用警告 (1nF0rmed)

  • 正确处理嵌入式对象的附件 (jrideout)

  • 添加对解析嵌入式消息对象的实验性支持 (jrideout)

  • 如果可能,使用长文件名作为压缩输出的名称 (jrideout)

  • 为拉取请求和每周一次运行 GitHub Actions CI (eumiro)

  • 使用 pathlib 而不是 os.path (eumiro)

  • 将 mapi 的日志记录器名称更改为软件包名称 (jrideout)

  • 为 mapi 属性解析添加单元测试 (jrideout)

  • 不再使用 Travis CI (jugmac00)

tnefparse 1.3.1 (2020-09-30)

  • 当可能时,使用启发式方法解码二进制主体和文件名 (jrideout)

  • 为 TNEF 内容添加 JSON 导出 (jrideout)

  • 添加对 Python 3.8 的支持 (jugmac00)

  • 使软件包和测试设置现代化 (jugmac00)

  • 对代码应用 Flake8 并在 CI 中强制执行规则 (jugmac00)

tnefparse 1.3.0 (2018-12-01)

  • 删除 Python 2.6 & 3.3 支持

  • Python 2/3 兼容性修复

  • 更多测试和示例文件 (jrideout)

  • 总体改进测试并开始跟踪覆盖率

  • 许多解析改进 (jrideout)

  • 将一些不必要的警告转换为调试消息

  • 添加 tnefparse -p | –path 选项,用于设置附件提取路径

  • 支持更多 MAPI (PidTag) 属性 (jrideout)

  • 支持提取 RTF 主体

  • 支持提取 msgprops 中顶级对象的属性

  • util.raw_mapi & tnefparse.parseFile 函数将在 1.3 版本后弃用

tnefparse 1.2.3, 2018-11-14

  • 其他修复

tnefparse 1.2.2, 2017

  • 当 TNEF 签名无效时,TNEF 初始化应引发 ValueError,而不是调用 sys.exit()

  • parseFile 便利函数不应期望一个 self 参数,已删除

  • 其他修复

tnefparse 1.2.1, 2013

  • Python 3 兼容性;测试在 Python 2.6/2.7/3.2/3.3 上通过

  • 将软件包添加到 travis ci

  • 添加 tox.ini 以使用 https://testrun.org/tox 进行测试

tnefparse 1.2, 2013

  • 性能改进和错误修复 (Dave Baggett)

  • 添加 to_zip 函数,用于将 TNEF 附件转换为 ZIP 格式 (Dave Baggett)

  • tnefparse 现在用于 Arcode 的 inky 邮件客户端

tnefparse 1.1.1,2012年8月(未发布)

  • 修复了导致’tnefparse’命令行调用失败的入口点错误

tnefparse 1.1,2012年3月

  • 重新打包并重命名了库

  • 代码迁移到github

  • 使用stdlib日志模块

  • 进一步修复纯Python代码的bug和增强功能

  • 添加命令行脚本

  • 弃用Unix tnef命令行工具包装器

pytnef 0.2.1-Novell,大约2010年

  • 对纯Python代码进行bug修复/增强(Tom Doman)

pytnef 0.2,大约2005年

  • 为Unix tnef命令行工具添加了包装器(Petri Savolainen)

  • 纯Python代码尚无太大用处

pytnef 0.1 - 大约2005年

  • 第一个版本(纯Python)由Trevor Scheroeder(Petri Savolainen)将Ruby TNEF解码器转换而成

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源代码分布

tnefparse-1.4.0.tar.gz (2.6 MB 查看哈希

上传时间 源代码

构建分布

tnefparse-1.4.0-py3-none-any.whl (30.9 kB 查看哈希

上传时间 Python 3

支持者: