Compartir a través de


Resolución de un nombre de destinatario

Hace referencia a: Outlook 2013 | Outlook 2016

Cuando se aborda un mensaje, se compila una lista de destinatarios con propiedades relacionadas con cada destinatario. En el momento en que se envía el mensaje, una de esas propiedades debe ser el identificador de entrada a largo plazo del destinatario. Para asegurarse de que cada destinatario incluye la propiedad PR_ENTRYID (PidTagEntryId), pase la estructura ADRLIST que describe la lista de destinatarios en el contenido del parámetro lpAdrList en una llamada a IAddrBook::ResolveName.

ResolveName comienza el procesamiento omitiendo las entradas de la estructura ADRLIST que ya se han resuelto, como se indica en la presencia de un identificador de entrada en la matriz SPropValue de la estructura ADRENTRY correspondiente. A continuación, ResolveName asigna automáticamente identificadores de entrada únicos a dos tipos de destinatarios:

  • Destinatarios con una dirección con formato de dirección de Internet

  • Destinatarios con una dirección con el formato siguiente:

    displayname[address type:email address]

Para todas las entradas restantes, ResolveName busca en la libreta de direcciones una coincidencia exacta en el nombre para mostrar. ResolveName usa la propiedad PR_AB_SEARCH_PATH (PidTagAbSearchPath) para determinar el conjunto de contenedores que se van a buscar y el orden de búsqueda. MAPI llama al método IABContainer::ResolveNames de cada contenedor para intentar resolver todos los nombres. Dado que algunos contenedores no admiten ResolveNames, si el contenedor devuelve MAPI_E_NO_SUPPORT, MAPI aplica una restricción de propiedad PR_ANR (PidTagAnr) a su tabla de contenido. Todos los contenedores de libreta de direcciones son necesarios para admitir la resolución de nombres con esta restricción. Una vez resueltos todos los nombres, no se realizan más llamadas de contenedor. Si se ha llamado a todos los contenedores, pero los nombres ambiguos o no resueltos permanecen, MAPI muestra un cuadro de diálogo si es posible para pedir al usuario que resuelva los nombres restantes.

La restricción de PR_ANR coincide con el valor de la propiedad PR_ANR con el nombre para mostrar de la estructura ADRLIST . La limitación de la vista de la tabla de contenido de un contenedor con la restricción de propiedad PR_ANR hace que el proveedor de la libreta de direcciones realice un tipo de búsqueda de "mejor estimación", que coincida con la propiedad que tiene sentido para el proveedor. Por ejemplo, un proveedor de libreta de direcciones siempre puede coincidir con los nombres de la lista de destinatarios con PR_DISPLAY_NAME (PidTagDisplayName), mientras que otro podría permitir que un administrador seleccione la propiedad.

Para establecer una restricción de propiedad PR_ANR en la tabla de contenido de un contenedor de libreta de direcciones

  1. Cree una estructura SRestriction como se muestra en el código siguiente:
SRestriction SRestrict;
SRestrict.rt = RES_PROPERTY;
SRestrict.res.resProperty.relop = RELOP_EQ;
SRestrict.res.resProperty.ulPropTag = PR_ANR;
SRestrict.res.resProperty.lpProp->ulPropTag = PR_ANR;
SRestrict.res.resProperty.lpProp->Value.LPSZ = lpszName;
 
  1. Llame al método IMAPITable::Restrict de la tabla de contenido, pasando la estructura SRestriction como parámetro lpRestriction .