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 文件上打开流,以便可以提取属性。

另请参阅