Compartir a través de


Obtener la dirección de correo electrónico de un elemento de contacto

Hace referencia a: Outlook 2013 | Outlook 2016

En este tema se muestra cómo obtener el valor de una propiedad con nombre que representa la dirección de correo electrónico de una Microsoft Outlook 2010 o Microsoft Outlook 2013 elemento Contact.

Puede asociar hasta tres direcciones de correo electrónico con un elemento Contacto en Outlook 2010 y Outlook 2013. Cada dirección de correo electrónico corresponde a una propiedad del objeto ContactItem de Outlook 2010 o Outlook 2013 en los modelos de objetos de Outlook 2010 y Outlook 2013. Interna a Outlook 2010 y Outlook 2013, la dirección de correo electrónico también corresponde a una propiedad con nombre MAPI. Por ejemplo, la primera dirección de correo electrónico de un contacto corresponde a la propiedad Email1Address del Objeto ContactItem en los modelos de objetos de Outlook 2010 y Outlook 2013, y a la propiedad canónica PidLidEmail1EmailAddress interna de Outlook 2010 y Outlook 2013.

Para obtener el valor de una dirección de correo electrónico de un elemento de contacto, puede usar el objeto PropertyAccessor del modelo de objetos de Outlook 2010 o Outlook 2013, o usar primero IMAPIProp::GetIDsFromNames para obtener la etiqueta de propiedad de la propiedad con nombre y, a continuación, especificar esta etiqueta de propiedad en IMAPIProp::GetProps para obtener el valor. Al llamar a IMAPIProp::GetIDsFromNames, especifique los valores adecuados para la estructura MAPINAMEID a la que apunta el parámetro de entrada lppPropNames. En el ejemplo de código siguiente se muestra cómo obtener la primera dirección de correo electrónico de un contacto especificado, lpContact', mediante GetIDsFromNames y GetProps.

HRESULT HrGetEmail1(LPMESSAGE lpContact) 
{ 
    HRESULT hRes = S_OK; 
    LPSPropTagArray lpNamedPropTags = NULL; 
    MAPINAMEID NamedID = {0}; 
    LPMAPINAMEID lpNamedID = &NamedID; 
    NamedID.lpguid = (LPGUID)&PSETID_Address; 
    NamedID.ulKind = MNID_ID; 
    NamedID.Kind.lID = dispidEmailEmailAddress; 
 
    hRes = lpContact->GetIDsFromNames( 
           1,  
           &lpNamedID,  
           NULL,  
           &lpNamedPropTags); 
 
    if (SUCCEEDED(hRes) && lpNamedPropTags) 
    { 
        SPropTagArray sPropTagArray; 
 
        sPropTagArray.cValues = 1; 
        sPropTagArray.aulPropTag[0] = CHANGE_PROP_TYPE(lpNamedPropTags->aulPropTag[0],PT_STRING8); 
        LPSPropValue lpProps = NULL; 
        ULONG cProps = 0; 
 
        hRes = lpContact->GetProps( 
               &sPropTagArray, 
               NULL, 
               &cProps, 
               &lpProps); 
        if (SUCCEEDED(hRes) &&  
            1 == cProps &&  
            lpProps &&  
            PT_STRING8 == PROP_TYPE(lpProps[0].ulPropTag) && 
            lpProps[0].Value.lpszA) 
        { 
            printf("Email address 1 = \"%s\"\n",lpProps[0].Value.lpszA); 
        } 
        MAPIFreeBuffer(lpProps); 
        MAPIFreeBuffer(lpNamedPropTags); 
     } 
     return hRes; 
}