一个用Python编写的、没有外部依赖的TNEF解码库
项目描述
tnefparse - TNEF解码和附件提取
这是一个适用于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 主体
上述属性中的一些可能为空,具体取决于解析的附件内容。
测试
要运行测试套件,您只需要 tox。 tox 将在所有支持的 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的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd871432b9afecb478fda2bbd4ab3673de00db4ba5dcc723bbb6c86a76420f95 |
|
MD5 | a9ca9ed0ce9c025b37175c902cc18a23 |
|
BLAKE2b-256 | 40aad1dee78d61c18abcec8de0343aca06e012e2007739c4868de8b254b6ab2f |
tnefparse-1.4.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b0e9e9dced05f182dafe19167fd28ff2cce102da30a7ff1101dc387194d012ba |
|
MD5 | e9808fd06535bfab2201c49da5221c93 |
|
BLAKE2b-256 | 64f7b92196c250d3e093e891677ccf31c469f41910acec80fc984b7460eb4e83 |