winmail.dat(tnef,Transport Neutral Encapsulation Format)文件解析, LIB-ZC
LIB-ZC 支持解析 winmail.dat(tnef,Transport Neutral Encapsulation Format)
电子邮件中有一种附件
- 名为 winmail.dat
- Content-Type 为 application/ms-tnef
- 数据格式为tnef, Transport Neutral Encapsulation Format
PS: 在Linux系统, 可以通过命令 tnef 解开 winmail.dat
下面介绍通过 LIB-ZC 的 API 解析 winmail.dat, 并介绍这些 API
第一步, 创建解析器
ztnef_t *ztnef_create_parser_from_pathname(const char *pathname, const char *default_charset);
- 从邮件文件创建解析器
- pathname: 是文件路径名
- default_charset: 默认的字符集, 一般取值为空 ""
ztnef_t * ztnef_create_parser_from_data(const char *tnef_data, int tnef_data_len, const char *default_charset);
- 从数据创建解析器
- tnef_data 是数据
- tnef_len 是长度
第二步, 获取节点(mime)
const zvector_t *vec = ztnef_get_all_mimes(parser);
const zvector_t *vec = ztnef_get_text_mimes(parser);
const zvector_t *vec = ztnef_get_attachment_mimes(parser);
第三步, 获取节点属性
const char *ztnef_mime_get_type(ztnef_mime_t *mime);
const char *ztnef_mime_get_filename(ztnef_mime_t *mime);
- 如果节点类型是附件, 返回节点的 filename, 否则返回 ""
const char *ztnef_mime_get_filename_utf8(ztnef_mime_t *mime);
- 如果节点类型是附件, 返回返回节点的 utf-8 字符集的 filename, 否则返回 ""
const char *ztnef_mime_get_content_id(ztnef_mime_t *mime);
- 如果节点类型是附件, 返回返回节点的 Content-ID, 否则返回 ""
const char *ztnef_mime_get_body_data(ztnef_mime_t *mime);
int ztnef_mime_get_body_len(ztnef_mime_t *mime);
const char *ztnef_mime_get_charset(ztnef_mime_t *mime);
void ztnef_debug_show(ztnef_t *parser);
第四步,释放解析器
void ztnef_free(ztnef_t *parser);
例子