Partager via


Obtention de l’adresse e-mail d’un contact

S’applique à : Outlook 2013 | Outlook 2016

Cette rubrique montre comment obtenir la valeur d’une propriété nommée qui représente l’adresse e-mail d’un Microsoft Outlook 2010 ou d’un élément contact Microsoft Outlook 2013.

Vous pouvez associer jusqu’à trois adresses e-mail à un élément Contact dans Outlook 2010 et Outlook 2013. Chaque adresse e-mail correspond à une propriété de l’objet ContactItem Outlook 2010 ou Outlook 2013 dans les modèles objet Outlook 2010 et Outlook 2013. Interne à Outlook 2010 et Outlook 2013, l’adresse e-mail correspond également à une propriété nommée MAPI. Par exemple, la première adresse e-mail d’un contact correspond à la propriété Email1Address de l’objet ContactItem dans les modèles objet Outlook 2010 et Outlook 2013, et à la propriété interne Outlook 2010 et Outlook 2013 nommée PidLidEmail1EmailAddress Canonical Property.

Pour obtenir la valeur d’une adresse e-mail d’un élément de contact, vous pouvez utiliser l’objet PropertyAccessor du modèle objet Outlook 2010 ou Outlook 2013, ou utiliser IMAPIProp ::GetIDsFromNames pour obtenir la balise de propriété de la propriété nommée, puis spécifier cette balise de propriété dans IMAPIProp ::GetProps pour obtenir la valeur. Lorsque vous appelez IMAPIProp ::GetIDsFromNames, spécifiez les valeurs appropriées pour la structure MAPINAMEID pointée vers le paramètre d’entrée lppPropNames. L’exemple de code suivant montre comment obtenir la première adresse e-mail d’un contact spécifié, lpContact', à l’aide de GetIDsFromNames et 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; 
}