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;
}