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 的用户。

另请参阅