获取联系人项的电子邮件地址

适用于:Outlook 2013 | Outlook 2016

本主题演示如何获取表示Microsoft Outlook 2010或Microsoft Outlook 2013联系人项目的电子邮件地址的命名属性的值。

最多可将三个电子邮件地址与 Outlook 2010 和 Outlook 2013 中的联系人项目相关联。 每个电子邮件地址对应于 Outlook 2010 和 Outlook 2013 对象模型中 Outlook 2010 或 Outlook 2013 ContactItem 对象的属性。 在 Outlook 2010 和 Outlook 2013 内部,电子邮件地址还对应于 MAPI 命名属性。 例如,联系人的第一个电子邮件地址对应于 Outlook 2010 和 Outlook 2013 对象模型中 ContactItemEmail1Address 属性,以及 Outlook 2010 和 Outlook 2013 内部名称为 PidLidEmail1EmailAddress 规范属性

若要获取联系人项目的电子邮件地址的值,可以使用 Outlook 2010 或 Outlook 2013 对象模型的 PropertyAccessor 对象,或者首先使用 IMAPIProp::GetIDsFromNames 获取命名属性的属性标记,然后在 IMAPIProp::GetProps 中指定此属性标记以获取该值。 调用 IMAPIProp::GetIDsFromNames 时,请为输入参数 lppPropNames 指向的 MAPINAMEID 结构指定适当的值。 以下代码示例演示如何使用 GetIDsFromNamesGetProps 获取指定联系人的第一个电子邮件地址 lpContact' 。

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