IXPLogon::AddressTypes

适用于:Outlook 2013 | Outlook 2016

返回传输提供程序处理的收件人类型。

HRESULT AddressTypes(
  ULONG FAR * lpulFlags,
  ULONG FAR * lpcAdrType,
  LPSTR FAR * FAR * lpppszAdrTypeArray,
  ULONG FAR * lpcMAPIUID,
  LPUID FAR * FAR * lpppUIDArray
);

参数

lpulFlags

[out]控制返回的字符串类型的标志的位掩码。 可以设置以下标志:

MAPI_UNICODE

返回的字符串采用 Unicode 格式。 如果未设置MAPI_UNICODE标志,则字符串采用 ANSI 格式。

lpcAdrType

[out]指向 lpppszAdrTypeArray 参数指向的数组中的条目计数的指针。

lpppszAdrTypeArray

[out]指向指向标识收件人类型的字符串数组的指针的指针。

lpcMAPIUID

[out]指向 lpppUIDArray 参数指向的数组中条目计数的指针。

lpppUIDArray

[out]指向指向指向 MAPIUID 结构的指针数组(用于标识收件人类型的)的指针的指针。

返回值

S_OK

传输提供程序已成功指示它可以处理的收件人类型。

针对实现者的说明

MAPI 后台处理程序在传输提供程序从 IXPProvider::TransportLogon 方法的调用返回后立即调用 IXPLogon::AddressTypes 方法,以便传输提供程序可以指示它处理的收件人类型。 为了指示这一点,传输提供程序应在 lpppszAdrTypeArray 参数中传递指向字符串指针数组的指针,或在 lpppUIDArray 参数中传递指向 MAPIUID 结构的指针数组的指针,或传递这两个参数中的值。

这两个数组用于不同的标识过程。 MAPI 和 MAPI 后台处理程序使用 lpppUIDArray 数组中的 MAPIUID 结构来标识由传输提供程序或传输提供程序连接到的消息传送系统直接处理的收件人条目标识符。 MAPI 和 MAPI 后台处理程序都不会通过使用这些 MAPIUID 结构中包含的条目标识符来扩展地址;这些结构仅用于收件人类型标识。

当 MAPI 后台处理程序决定哪个传输提供程序应处理出站邮件的收件人时,将使用 lpppszAdrTypeArray 参数中的每个字符串进行比较测试。 如果邮件收件人 的PR_ADDRTYPE (PidTagAddressType) 属性与标识传输提供程序提供的消息地址类型之一的字符串完全匹配,则提供程序可以将邮件传递给该收件人。

如果多个传输提供程序可以处理相同类型的收件人,则 MAPI 会根据客户端应用程序配置文件中指示的传输优先级顺序选择传输提供程序。 为了确定要使用的传输提供程序,MAPI 后台处理程序按优先级顺序扫描所有提供程序指定的 MAPIUID 结构,然后按优先级顺序扫描所有提供程序指定的地址类型值。 在此扫描中匹配特定收件人的第一个传输提供程序将获得处理此收件人的第一个机会。 如果该提供程序不处理收件人,MAPI 后台处理程序将继续扫描,以查找尚未处理的任何收件人的传输提供程序。 扫描会一直持续到找不到进一步的匹配项,此时会为未处理的任何收件人生成未交付报告。

如果提供程序始终支持一组特定的收件人类型,则传输提供程序传递的地址类型和 MAPIUID 数组可以是静态的。 如果传输提供程序动态构造这些数组,则它可以使用之前在 对 TransportLogon 的调用中传递的支持对象来分配内存,尽管这不是必需的。

用于地址类型和 MAPIUID 数组的内存应保持分配状态,直到最终调用 IXPLogon::TransportLogoff 方法,此时传输提供程序可以释放内存(如有必要)。 传输提供程序不应在从 TransportLogoff 调用返回后更改这些数组的内容。

可以处理任何类型的收件人的传输提供程序可以在 lpppszAdrTypeArray 参数中返回 NULL。 基于 LAN 的消息传送系统的传输提供程序通常使用中央服务器将传出消息传递到各种外部消息系统。 这种类型的传输提供程序应安装在配置文件中传输提供程序的 MAPI 和 MAPI 后台处理程序优先级顺序中。

不支持根据地址类型调度到它的出站消息的传输提供程序应在 lpppszAdrTypeArray 中返回单个零长度字符串。 如果传输提供程序不支持任何收件人类型,则它应为 MAPIUID 结构传递 NULL,并为地址类型传递空字符串。 此类型的传输提供程序最常用于安装消息预处理器。

另请参阅

IXPLogon::TransportLogoff

IXPProvider::TransportLogon

MAPIUID

IXPLogon : IUnknown