Compartir a través de


IAddrBook::ResolveName

Hace referencia a: Outlook 2013 | Outlook 2016

Realiza la resolución de nombres y asigna identificadores de entrada a los destinatarios de una lista de destinatarios.

HRESULT ResolveName(
  ULONG_PTR ulUIParam,
  ULONG ulFlags,
  LPSTR lpszNewEntryTitle,
  LPADRLIST lpAdrList
);

Parameters

ulUIParam

[in] Identificador de la ventana primaria de un cuadro de diálogo que se muestra, si se especifica, para pedir al usuario que resuelva la ambigüedad.

ulFlags

[in] Máscara de bits de marcas que controlan varios aspectos del proceso de resolución. Se pueden establecer las siguientes marcas:

AB_UNICODEUI

Indica que lpszNewEntryTitle es una cadena UNICODE.

MAPI_CACHE_ONLY

Use solo 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_DIALOG

Muestra un cuadro de diálogo para solicitar al usuario información adicional sobre la resolución de nombres. Si no se establece esta marca, no se muestra ningún cuadro de diálogo.

MAPI_UNICODE

Indica que las propiedades devueltas en la lista de direcciones deben ser de tipo PT_UNICODE en lugar de PT_STRING8.

lpszNewEntryTitle

[in] Puntero al texto del título del control en el cuadro de diálogo que pide al usuario que escriba un destinatario. El título varía en función del tipo de destinatario. El parámetro lpszNewEntryTitle puede ser NULL.

lpAdrList

[entrada y salida] Puntero a una estructura ADRLIST que contiene la lista de nombres de destinatario que se van a resolver. El método IAddrBook::Address puede crear esta estructura ADRLIST.

Valor devuelto

S_OK

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

MAPI_E_AMBIGUOUS_RECIP

Al menos un destinatario del parámetro lpAdrList coincidió con más de una entrada en la libreta de direcciones. Normalmente, este valor se devuelve cuando se establece la marca de MAPI_DIALOG, lo que prohíbe la visualización de un cuadro de diálogo.

MAPI_E_NOT_FOUND

No se puede resolver al menos un destinatario en el parámetro lpAdrList . Normalmente, este valor se devuelve cuando se establece la marca de MAPI_DIALOG, lo que prohíbe la visualización de un cuadro de diálogo.

Comentarios

Los clientes y proveedores de servicios llaman al método ResolveName para iniciar el proceso de resolución de nombres. Una entrada sin resolver es una entrada que aún no tiene un identificador de entrada o una propiedad PR_ENTRYID (PidTagEntryId).

ResolveName pasa por el proceso siguiente para cada entrada sin resolver de la lista de direcciones pasada en el parámetro lpAdrList .

  1. Si el tipo de dirección del destinatario se ajusta al formato de una dirección SMTP ( nombre de pantalla@ domain.top-level-domain), ResolveName le asigna un identificador de entrada único.

  2. Para cada contenedor de la propiedad PR_AB_SEARCH_PATH (PidTagAbSearchPath), ResolveName llama al método IABContainer::ResolveNames . ResolveNames intenta coincidir con el nombre para mostrar de cada destinatario sin resolver con un nombre para mostrar que pertenece a una de sus entradas.

  3. Si un contenedor no admite ResolveNames, ResolveName restringe la tabla de contenido del contenedor mediante una restricción de propiedad PR_ANR (PidTagAnr). Esta restricción hace que el contenedor realice un tipo de búsqueda "best guess" para buscar un destinatario coincidente. Todos los contenedores deben admitir la restricción de propiedad PR_ANR .

  4. Cuando un contenedor devuelve un destinatario que coincide con varios nombres, ResolveName muestra un cuadro de diálogo si se establece la marca de MAPI_DIALOG, lo que permite al usuario seleccionar el nombre correcto.

  5. Si se ha llamado a todos los contenedores de la propiedad PR_AB_SEARCH_PATH y no se ha encontrado ninguna coincidencia, el destinatario permanece sin resolver.

Si uno o varios destinatarios no están resueltos, ResolveName devuelve MAPI_E_NOT_FOUND. Si uno o varios destinatarios tenían una resolución ambigua que no se pudo resolver con un cuadro de diálogo o porque no se estableció la marca de MAPI_DIALOG, ResolveName devuelve MAPI_E_AMBIGUOUS_RECIP. Cuando algunos de los destinatarios son ambiguos y algunos no se pueden resolver, ResolveName puede devolver cualquiera de los valores de error.

Si no se puede resolver un nombre, el cliente puede crear una dirección única que tenga un identificador de entrada y una dirección con formato especial. Para obtener más información sobre el formato de los identificadores de entrada de un solo uso, vea Identificadores de entrada de un solo uso. Para obtener más información sobre el formato de las direcciones de un solo uso, vea Direcciones de un solo uso.

MAPI admite cadenas de caracteres Unicode para ADRLIST y los nuevos parámetros de título de entrada en ResolveName; Si establece la marca de MAPI_UNICODE, se devuelven las siguientes propiedades como tipo PT_UNICODE en las estructuras ADRENTRY :

Sin embargo, la propiedad PR_7BIT_DISPLAY_NAME (PidTag7BitDisplayName) siempre se devuelve como tipo PT_STRING8.

Referencia de MFCMAPI

Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.

Archivo Función Comentario
MAPIABFunctions.cpp
AddOneOffAddress
MFCMAPI usa el método ResolveName para resolver una dirección única antes de agregarla a un mensaje.
MAPIABFunctions.cpp
AddRecipient
MFCMAPI usa el método ResolveName para buscar una entrada de libreta de direcciones por nombre para mostrar.

Vea también

ADRLIST

IABContainer::ResolveNames

IAddrBook::Address

IAddrBook : IMAPIProp

MFCMAPI como un ejemplo de c�digo