Implementación de la resolución de nombres
Hace referencia a: Outlook 2013 | Outlook 2016
Los proveedores de libreta de direcciones son responsables de admitir la resolución de nombres: el proceso de asociar un identificador de entrada con un nombre para mostrar. Los clientes inician la resolución de nombres cuando llaman a IAddrBook::ResolveName para asegurarse de que cada miembro de la lista de destinatarios de un mensaje saliente corresponde a una dirección válida.
El proveedor puede admitir la resolución de nombres mediante:
Compatibilidad con la restricción de propiedades PR_ANR (PidTagAnr), un requisito para todos los contenedores de libreta de direcciones.
Implementar el método IABContainer::ResolveNames , una opción para todos los contenedores de libreta de direcciones.
Si decide admitir IABContainer::ResolveNames, intente buscar una coincidencia exacta para cada nombre para mostrar sin resolver en la estructura ADRLIST pasada con el parámetro lpAdrList . Puede identificar un nombre para mostrar sin resolver porque falta la propiedad PR_ENTRYID (PidTagEntryId) en la matriz de valores de propiedad en su miembro aEntries de la estructura ADRLIST . Omita las entradas que tengan cero propiedades asociadas.
Informe del resultado del intento de resolución en el parámetro lpFlagList , una matriz de marcas que corresponde a la matriz de nombres para mostrar en lpAdrList. Las marcas son posicionales de modo que la primera marca corresponde al primer miembro aEntries de la estructura ADRLIST , la segunda marca corresponde al segundo miembro aEntries , etc.
Hay tres resultados posibles para cada entrada sin resolver:
No se encontró ninguna coincidencia, lo que significa que ninguna de las entradas del contenedor coincide con la entrada de la estructura ADRLIST . Establezca la entrada correspondiente en el parámetro lpFlagList en MAPI_UNRESOLVED.
Se pueden encontrar varias coincidencias, lo que significa que hay varias entradas de contenedor que coinciden con la entrada de la estructura ADRLIST . Establezca la entrada correspondiente en el parámetro lpFlagList en MAPI_AMBIGUOUS. No cambie el número de entradas en la estructura ADRLIST .
Se puede encontrar una coincidencia exacta, lo que significa que solo hay una entrada de contenedor que coincide con la entrada de la estructura ADRLIST . Establezca el miembro correspondiente en el parámetro lpFlagList en MAPI_RESOLVED y agregue el identificador de entrada a la matriz de propiedades asociada a la entrada ADRLIST .
Si decide no admitir IABContainer::ResolveNames, devuelva MAPI_E_NO_SUPPORT de la implementación.
Todos los proveedores de libretas de direcciones deben admitir la resolución ambigua de nombres (la restricción de propiedad PR_ANR ) en las tablas de contenido de sus contenedores. Para proporcionar esta compatibilidad, controle la restricción de PR_ANR en la implementación de IMAPITable::Restrict mediante la realización de un tipo de búsqueda "best guess", que coincida con una o varias propiedades concretas que tengan sentido para el proveedor. Puede elegir usar la misma propiedad o propiedades cada vez, como PR_DISPLAY_NAME (PidTagDisplayName) o PR_ACCOUNT (PidTagAccount), o permitir que un administrador elija entre una lista de propiedades aceptables.
Aunque la mayoría de los proveedores proporcionan su propia implementación de tabla de contenido, puede personalizar la implementación proporcionada por MAPI a través de la función CreateTable . Sin embargo, dado que la implementación mapi no admite restricciones de ningún tipo, debe crear un objeto contenedor para incluir una versión personalizada de Restrict que intercepte la llamada.