連絡先アイテムのメール アドレスを取得する

適用対象: Outlook 2013 | Outlook 2016

このトピックでは、Microsoft Outlook 2010または連絡先アイテムのメール アドレスを表す名前付きプロパティの値Microsoft Outlook 2013取得する方法について説明します。

Outlook 2010 および Outlook 2013 では、連絡先アイテムに最大 3 つのメール アドレスを関連付けることができます。 各メール アドレスは、Outlook 2010 および Outlook 2013 オブジェクト モデルの Outlook 2010 または Outlook 2013 ContactItem オブジェクトのプロパティに対応します。 Outlook 2010 および Outlook 2013 の内部では、電子メール アドレスは MAPI の名前付きプロパティにも対応しています。 たとえば、連絡先の最初のメール アドレスは、Outlook 2010 および Outlook 2013 オブジェクト モデルの ContactItemEmail1Address プロパティと、PidLidEmail1EmailAddress 正規プロパティという名前の Outlook 2010 および Outlook 2013 内部に対応します。

連絡先アイテムのメール アドレスの値を取得するには、Outlook 2010 または Outlook 2013 オブジェクト モデルの PropertyAccessor オブジェクトを使用するか、最初に IMAPIProp::GetIDsFromNames を使用して名前付きプロパティのプロパティ タグを取得し、 IMAPIProp::GetProps でこのプロパティ タグを指定して値を取得します。 IMAPIProp::GetIDsFromNames を呼び出す場合は、入力パラメーター lppPropNames が指す MAPINAMEID 構造体に適切な値を指定します。 次のコード サンプルは、 GetIDsFromNames と GetProps を使用して、指定した連絡先 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; 
}