Compartir a través de


IABContainer::ResolveNames

Hace referencia a: Outlook 2013 | Outlook 2016

Realiza la resolución de nombres para una o varias entradas de destinatario.

HRESULT ResolveNames(
  LPSPropTagArray lpPropTagArray,
  ULONG ulFlags,
  LPADRLIST lpAdrList,
  LPFlagList lpFlagList
);

Parameters

lpPropTagArray

[in] Puntero a una estructura SPropTagArray que contiene una matriz de etiquetas de propiedad que describen las propiedades que se van a incluir en la estructura ADRLIST devuelta por el proveedor. Para solicitar el conjunto predeterminado de propiedades del proveedor, pase NULL en el parámetro lpPropTagArray .

ulFlags

[in] Máscara de bits de marcas que controla el tipo de texto en las cadenas devueltas. Se pueden establecer las siguientes marcas:

EMS_AB_ADDRESS_LOOKUP

Solo se encontrarán coincidencias exactas de direcciones de proxy; se omiten las coincidencias parciales. Esta marca solo es compatible con el proveedor de libreta de direcciones de Exchange.

MAPI_CACHE_ONLY

Solo se usará la libreta de direcciones sin conexión para realizar la resolución de nombres. Por ejemplo, puede usar esta marca para permitir que una aplicación cliente abra la lista global de direcciones (GAL) en modo de intercambio almacenado en caché y acceda a una entrada en esa libreta de direcciones desde la memoria caché sin crear tráfico entre el cliente y el servidor. Esta marca solo es compatible con el proveedor de libreta de direcciones de Exchange.

MAPI_UNICODE

Las propiedades de cadena devueltas están en formato Unicode. Si no se establece la marca de MAPI_UNICODE, las cadenas están en formato ANSI.

lpAdrList

[entrada, salida] En la entrada, puntero a una estructura ADRLIST que contiene la lista de destinatarios que se van a resolver. En la salida, un puntero a una estructura ADRLIST que contiene los nombres resueltos.

lpFlagList

[entrada, salida] Puntero a una matriz de marcas, cada marca correspondiente a una estructura ADRENTRY en el parámetro lpAdrList , que proporciona el estado de la operación de resolución de nombres para el destinatario. Las marcas del parámetro lpFlagList están en el mismo orden que las entradas de lpAdrList. Se pueden establecer las siguientes marcas:

MAPI_AMBIGUOUS

El destinatario correspondiente se ha resuelto, pero no en un identificador de entrada único. Otros contenedores no deben intentar resolver este destinatario.

MAPI_RESOLVED

El destinatario correspondiente se ha resuelto en un identificador de entrada único. Otros contenedores no deben intentar resolver este destinatario.

MAPI_UNRESOLVED

No se ha resuelto la entrada correspondiente. Otros contenedores deben intentar resolver este destinatario.

Valor devuelto

S_OK

El proceso de resolución de nombres se realizó correctamente.

MAPI_E_BAD_CHARWIDTH

Se estableció la marca de MAPI_UNICODE y la implementación no admite Unicode, o MAPI_UNICODE no se estableció y la implementación solo admite Unicode.

MAPI_E_NO_SUPPORT

El proveedor de libreta de direcciones no admite la resolución masiva de nombres mediante este método.

Comentarios

El método ResolveNames intenta hacer coincidir los destinatarios sin resolver de la matriz de entradas del parámetro lpAdrList con los destinatarios de este contenedor de libreta de direcciones. Un destinatario sin resolver normalmente solo tiene la propiedad PR_DISPLAY_NAME (PidTagDisplayName) y posiblemente algunas otras propiedades. Un destinatario sin resolver no tiene la propiedad PR_ENTRYID (PidTagEntryId) y su marca correspondiente en el parámetro lpFlagList se establece en MAPI_UNRESOLVED. Por el contrario, un destinatario resuelto siempre tiene al menos la propiedad PR_ENTRYID más otras propiedades, como PR_EMAIL_ADDRESS (PidTagEmailAddress), PR_DISPLAY_NAME y PR_ADDRTYPE (PidTagAddressType).

Normalmente, la resolución de nombres se inicia cuando un cliente llama al método IAddrBook::ResolveName . Outlook MAPI responde llamando al método ResolveNames de cada contenedor de libreta de direcciones incluido en la ruta de búsqueda de la libreta de direcciones, especificada por la propiedad PR_AB_SEARCH_PATH (PidTagAbSearchPath). Las entradas del parámetro lpAdrList incluyen destinatarios ya resueltos porque están en contenedores para los que MAPI ya ha llamado ResolveNames, porque las entradas aparecen anteriormente en la ruta de acceso de búsqueda.

Cada contenedor intenta resolver las entradas sin resolver haciendo coincidir el nombre para mostrar del destinatario con el nombre para mostrar de una de sus entradas. Cuando se encuentra una coincidencia única, ResolveNames agrega la propiedad PR_ENTRYID y otras propiedades que se incluyen en el parámetro lpPropTagArray a la entrada correspondiente en la estructura ADRLIST saliente. A continuación, ResolveNames establece la entrada del parámetro lpFlagList en MAPI_RESOLVED. El identificador de entrada almacenado en la propiedad PR_ENTRYID puede ser a corto o largo plazo.

Después de que todos los contenedores de la ruta de acceso de búsqueda hayan intentado el proceso de resolución de nombres, MAPI abre un cuadro de diálogo, si es posible, para solicitar ayuda al usuario para resolver los conflictos restantes.

Los clientes también pueden usar la estructura ADRLIST devuelta en las llamadas al método IMessage::ModifyRecipients .

Notas a los implementadores

No es necesario admitir la resolución de nombres con el método ResolveNames . En su lugar, o además, puede admitirlo con la restricción de propiedad PR_ANR (PidTagAnr). Si decide confiar en la restricción de PR_ANR para la resolución de nombres, puede devolver MAPI_E_NO_SUPPORT. For more information, see Implementaci�n de la resoluci�n de nombres.

Establezca la entrada de marca de un destinatario en el parámetro lpFlagList en MAPI_UNRESOLVED si el destinatario no coincide con ninguno de los destinatarios del contenedor.

Cuando un destinatario coincida con varios destinatarios, establezca su marca en MAPI_AMBIGUOUS y no cambie su estructura ADRENTRY .

MAPI requiere ciertas propiedades para los destinatarios que se incluyen en la lista de destinatarios de un mensaje. Puede incluirlos en la estructura ADRENTRY como parte del proceso de resolución de nombres o esperar a que MAPI los solicite con llamadas a los métodos IAddrBook::P repareRecips e IMAPISupport::ExpandRecips . Puede eliminar estas llamadas adicionales y mejorar el rendimiento mediante la inclusión de las siguientes propiedades en las estructuras ADRENTRY de todos los destinatarios resueltos:

Si algunas de las propiedades del parámetro lpPropTagArray no están disponibles,normalmente porque la entrada de contenedor no admite las propiedades y no están incluidas en el miembro ADRENTRY del destinatario en la estructura ADRLIST , establezca el tipo de propiedad de cada propiedad no disponible en PT_ERROR.

No quite ninguna propiedad de la estructura ADRENTRY de un destinatario resuelto.

Si debe reemplazar en lugar de modificar una estructura ADRENTRY , libere primero la estructura ADRENTRY original llamando a la función MAPIFreeBuffer y, a continuación, asigne la estructura ADRENTRY de reemplazo con MAPIAllocateBuffer.

Vea también

ADRENTRY

ADRLIST

IAddrBook::PrepareRecips

IAddrBook::ResolveName

IMAPISupport::ExpandRecips

IMessage::ModifyRecipients

Propiedad canónica PidTagAnr

SPropertyRestriction

IABContainer : IMAPIContainer