OpenTnefStream
适用于:Outlook 2013 | Outlook 2016
由传输提供程序调用, (TNEF) 会话启动 MAPI 传输中性封装格式。
属性 | 值 |
---|---|
标头文件: |
Tnef.h |
实现者: |
MAPI |
调用者: |
传输提供程序 |
HRESULT OpenTnefStream(
LPVOID lpvSupport,
LPSTREAM lpStream,
LPSTR lpszStreamName,
ULONG ulFlags,
LPMESSAGE lpMessage,
WORD wKey,
LPITNEF FAR * lppTNEF
);
参数
lpvSupport
[in]传递支持对象,或传入 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]指向消息对象的指针,作为具有附件的已解码邮件的目标或带有附件的编码邮件的源。 目标消息的任何属性都可能被编码消息的属性覆盖。
wKey
[in]TNEF 对象用于将附件与邮件文本中插入的文本标记匹配的搜索键。 此值在消息之间应相对唯一。
lppTNEF
[out]指向新 TNEF 对象的指针。
返回值
S_OK
调用成功,并返回了预期的值。
备注
由 OpenTnefStream 函数创建的 TNEF 对象稍后调用 OLE 方法 IUnknown::AddRef,以添加对支持对象、流对象和消息对象的引用。 传输提供程序可以通过对 TNEF 对象的 OLE 方法 IUnknown::Release 进行一次调用来释放所有三个对象的引用。
OpenTnefStream 分配并初始化一个 TNEF 对象 ITnef 接口,供提供程序用于将 MAPI 消息 IMessage 接口编码为 TNEF 流消息。 或者,函数可以为提供程序设置 对象,以便在后续调用 ITnef::ExtractProps 时使用,将 TNEF 流消息解码为 MAPI 消息。 若要释放 TNEF 对象并关闭会话,传输提供程序必须对 对象调用继承的 IUnknown::Release 方法。
此函数是用于 TNEF 访问的原始入口点,已被 OpenTnefStreamEx 取代,但仍用于兼容已使用 TNEF 的用户。