一次性条目标识符

适用于:Outlook 2013 | Outlook 2016

一次性条目标识符由 IAddrBook::CreateOneOff 方法中的 MAPI 和无权访问 MAPI 子系统的组件(如网关组件)创建。 有关详细信息,请参阅 IAddrBook::CreateOneOff。 下图显示了一次性条目标识符的格式。

一次性条目标识符格式

一次性条目标识符格式

第一个字段是一种特殊的 MAPIUID 结构,用于将条目标识符标识为表示自定义收件人。 此 MAPIUID 结构必须设置为常量MAPI_ONE_OFF_UID。 MAPI_ONE_OFF_UID在头文件 MAPIDEFS.H 中定义。

版本和标志字段是 Intel 字节顺序中的 16 位单词。 版本字段必须设置为零。 标志字段可以设置为以下值:

MAPI_ONE_OFF_NO_RICH_INFO

MAPI_ONE_OFF_UNICODE

如果收件人不应以传输中性封装格式 (TNEF) 接收邮件内容,则会设置MAPI_ONE_OFF_NO_RICH_INFO标志。 当MAPI_SEND_NO_RICH_INFO传递到 IAddrBook::CreateOneOff 方法时,将设置此标志。

如果显示名称和电子邮件地址是 Unicode 字符串,则会设置MAPI_ONE_OFF_UNICODE标志。 当MAPI_UNICODE传递到 IAddrBook::CreateOneOff 时,将设置此标志。 当MAPI_UNICODE标志未传递到 CreateOneOff 时,MAPI 假定显示名称和电子邮件地址字符串位于工作站的当前 ANSI 字符集中。 ANSI 字符串通常不能很好地处理使用不同字符集在平台之间发送的消息,因为代码页未在条目标识符中编码。 为了防止这种潜在的不兼容性,许多地址类型仅限于跨多个字符集通用的那些字符。 但是,为了确保字符集和平台兼容性,客户端应对其消息中的字符串使用 Unicode。

显示名称是一个以 null 结尾的字符串,它对应于收件人PR_DISPLAY_NAME (PidTagDisplayName) 属性和传递给 IAddrBook::CreateOneOff的 lpszName 参数。 如果设置了MAPI_ONE_OFF_UNICODE标志,则字符集为 Unicode;如果已清除,则为 ANSI。

地址类型是一个以 null 结尾的字符串,它对应于收件人的 PR_ADDRTYPE (PidTagAddressType) 属性和传递给 IAddrBook::CreateOneOff的 lpszAdrType 参数。

电子邮件地址是一个以 null 结尾的字符串,对应于收件人的 PR_EMAIL_ADDRESS (PidTagEmailAddress) 属性和传递给 IAddrBook::CreateOneOff的 lpszAddress 参数。

注意

一次性条目标识符结构中没有填充;字节完全按照上述说明进行打包,并且条目标识符长度不应包含电子邮件地址的终止 null 字符以外的任何字节。

手动构造一次性条目标识符的客户端和通讯簿提供程序可能还需要为 PR_RECORD_KEY (PidTagRecordKey) 和 PR_SEARCH_KEY (PidTagSearchKey) 属性生成值。 记录键与条目标识符相同。 搜索键应按以下顺序串联以下字段:

  1. 地址类型,已转换为大写字符。

  2. 冒号 (:) 。

  3. 电子邮件地址,已转换为大写字符。

  4. 终止 null 字符。

生成搜索键时,无需执行字符集转换。