Получение электронного адреса элемента контакта
Область применения: Outlook 2013 | Outlook 2016
В этом разделе показано, как получить значение именованного свойства, представляющего адрес электронной почты Microsoft Outlook 2010, русская версия или Microsoft Outlook 2013 контакта.
Вы можете связать до трех адресов электронной почты с элементом контактов в Outlook 2010 и Outlook 2013. Каждый адрес электронной почты соответствует свойству объекта Outlook 2010 или Outlook 2013 ContactItem в объектных моделях Outlook 2010 и Outlook 2013. Внутренний адрес электронной почты Outlook 2010 и Outlook 2013 также соответствует свойству MAPI с именем. Например, первый адрес электронной почты контакта соответствует свойству Email1Addressобъекта ContactItem в объектных моделях Outlook 2010 и Outlook 2013, а также внутреннему свойству Outlook 2010 и Outlook 2013 с именем PidLidEmail1EmailAddress Canonical Property.
Чтобы получить значение адреса электронной почты элемента контакта, можно использовать объект PropertyAccessor объектной модели Outlook 2010 или Outlook 2013 или сначала использовать IMAPIProp::GetIDsFromNames для получения тега свойства именованного свойства, а затем указать этот тег свойства в IMAPIProp::GetProps , чтобы получить значение. При вызове IMAPIProp::GetIDsFromNames укажите соответствующие значения для структуры MAPINAMEID , на которую указывает входной параметр lppPropNames. В следующем примере кода показано, как получить первый адрес электронной почты указанного контакта,lpContact', используя GetIDsFromNames и 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;
}