OpenTnefStreamEx
适用于:Outlook 2013 | Outlook 2016
(TNEF) 对象创建 Transport-Neutral 封装格式,该对象可用于将消息对象编码或解码为 TNEF 数据流,供传输或网关和消息存储使用。 这是 TNEF 访问的入口点。
属性 | 值 |
---|---|
标头文件: |
Tnef.h |
实现者: |
MAPI |
调用者: |
传输提供程序 |
HRESULT OpenTnefStreamEx(
LPVOID lpvSupport,
LPSTREAM lpStream,
LPSTR lpszStreamName,
ULONG ulFlags,
LPMESSAGE lpMessage,
WORD wKeyVal,
LPADDRESSBOOK lpAddressBook,
LPITNEF FAR * lppTNEF
);
参数
lpvSupport
[in]传递支持对象,或传入 NULL。 如果为 NULL, 则 lpAddressBook 参数应为非 null。
lpStream
[in]指向存储流对象的指针,例如 OLE IStream 接口,提供 TNEF 流消息的源或目标。
lpszStreamName
[in]指向 TNEF 对象使用的数据流名称的指针。 如果调用方在调用 OpenTnefStream 时 ( ulFlags 参数) 设置了TNEF_ENCODE标志,则 lpszName 参数必须指定指向非 null 字符串的非 null 指针,该字符串包含任何被认为对命名文件有效的字符。 MAPI 不允许包含字符“[”、“]”或“:”的字符串名称,即使文件系统允许使用它们。 为 lpszName 参数传递的字符串大小不能超过 MAX_PATH 的值,即包含路径名的字符串的最大长度。
ulFlags
[in]用于指示函数模式的标志的位掩码。 可以设置以下标志:
TNEF_BEST_DATA
所有可能的属性都映射到其下级属性中,但如果由于转换为下级属性而可能丢失数据,该属性也会在封装中编码。 请注意,这将导致 TNEF 流中的信息重复。 如果未指定其他模式,则默认TNEF_BEST_DATA。
TNEF_COMPATIBILITY
提供与旧客户端应用程序的向后兼容性。 使用此标志编码的 TNEF 流会将所有可能的属性映射到其相应的下层属性。 此模式还会导致下级客户端所需的某些属性默认。
警告
此标志已过时,不应使用。
TNEF_DECODE
使用只读访问权限打开所指示流上的 TNEF 对象。 如果函数要初始化 对象以供后续解码,则传输提供程序必须设置此标志。
TNEF_ENCODE
打开所指示流上的 TNEF 对象以获取读/写权限。 如果函数要初始化 对象以便进行后续编码,则传输提供程序必须设置此标志。
TNEF_PURE
将所有属性编码为 MAPI 封装块。 因此,“纯”TNEF 文件最多由属性 attMAPIProps、attAttachment、attRenddata 和 attRecipTable 组成。 此模式非常适合在不需要向后兼容性的情况下使用。
lpMessage
[in]指向消息对象的指针,作为具有附件的已解码邮件的目标或带有附件的编码邮件的源。 目标消息的任何属性都可以被编码消息的属性覆盖。
wKeyVal
[in]TNEF 对象用于将附件与邮件文本中插入的文本标记匹配的搜索键。 此值在消息之间应相对唯一。
lpAddressBook
[in]指向用于获取条目标识符的寻址信息的通讯簿对象的指针。
lppTNEF
[out]指向新 TNEF 对象的指针。
返回值
S_OK
调用成功,并返回了预期的值。
备注
OpenTnefStreamEx 函数是 OpenTnefStream 的建议替代函数,OpenTnefStream 是 TNEF 访问的原始入口点。
由 OpenTnefStreamEx 函数创建的 TNEF 对象稍后调用 OLE 方法 IUnknown::AddRef,以添加对支持对象、流对象和消息对象的引用。 传输提供程序可以通过对 TNEF 对象的 OLE 方法 IUnknown::Release 进行一次调用来释放所有三个对象的引用。
OpenTnefStreamEx 分配并初始化一个 TNEF 对象,供提供程序用于将 MAPI 消息编码为 TNEF 流消息。 或者,此函数可以为提供程序设置 对象,以便在后续调用 ITnef::ExtractProps 时使用,将 TNEF 流消息解码为 MAPI 消息。 若要释放 TNEF 对象并关闭会话,传输提供程序必须对 对象调用继承的 IUnknown::Release 方法。
wKeyVal 参数的基值不能为零,并且每次调用 OpenTnefStreamEx 时都不应相同。 相反,请根据运行时库的随机数生成器中的系统时间使用随机数。
MFCMAPI 引用
有关 MFCMAPI 示例代码,请参阅下表。
文件 | 函数 | Comment |
---|---|---|
File.cpp |
LoadFromTNEF |
MFCMAPI 使用 OpenTnefStreamEx 方法在 TNEF 文件上打开流,以便可以提取属性。 |