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