// uses the built in outlook email fields, OUTLOOK_EMAIL1 etc, minus 1 for ADDRt_YPE and +1 for EmailOriginalDisplayName String MAPIContact::GetEmail(int nIndex) { String strEmail; ULONG nID = GetOutlookEmailID(nIndex); if(!nID) return String(); #ifdef _WIN32_WCE return GetPropertyString(nID, strEmail); #else LPSPropValue pProp; if(GetOutlookProperty(OUTLOOK_DATA1, nID-1, pProp)) { String strAddrType = MAPIEx::GetValidString(*pProp); MAPIFreeBuffer(pProp); if(GetOutlookProperty(OUTLOOK_DATA1, nID, pProp)) { strEmail = MAPIEx::GetValidString(*pProp); MAPIFreeBuffer(pProp); if(strAddrType == "EX") { // for EX types we use the original display name (seems to contain the appropriate data) if(GetOutlookProperty(OUTLOOK_DATA1, nID+1, pProp)) { strEmail = MAPIEx::GetValidString(*pProp); MAPIFreeBuffer(pProp); } } return strEmail; } } return String(); #endif }
// uses the built in outlook email fields, OUTLOOK_EMAIL1 etc, minus 1 for ADDR_TYPE and +1 for EmailOriginalDisplayName BOOL CMAPIContact::GetEmail(CString& strEmail,int nIndex) { strEmail = ""; ULONG nID=GetOutlookEmailID(nIndex); if(!nID) return FALSE; LPSPropValue pProp; CMAPINamedProperty prop(m_pUser); if(prop.GetOutlookProperty(OUTLOOK_DATA1,nID-1,pProp)) { CString strAddrType=CMAPIEx::GetValidString(*pProp); MAPIFreeBuffer(pProp); if(prop.GetOutlookProperty(OUTLOOK_DATA1,nID,pProp)) { strEmail=CMAPIEx::GetValidString(*pProp); MAPIFreeBuffer(pProp); if(strAddrType==_T("EX")) { // for EX types we use the original display name (seems to contain the appropriate data) if(prop.GetOutlookProperty(OUTLOOK_DATA1,nID+1,pProp)) { strEmail=CMAPIEx::GetValidString(*pProp); MAPIFreeBuffer(pProp); } } return TRUE; } } return FALSE; }
bool MAPIContact::SetEmailDisplayAs(const String &szDisplayAs, int nIndex) { #ifdef _WIN32_WCE return false; #endif ULONG nID = GetOutlookEmailID(nIndex); if(!nID) return false; return SetOutlookProperty(OUTLOOK_DATA1, nID-3, szDisplayAs); }
String MAPIContact::GetEmailDisplayAs(int nIndex) { String strDisplayAs; #ifdef _WIN32_WCE return GetEmail(strDisplayAs, nIndex); #else ULONG nID = GetOutlookEmailID(nIndex); if(!nID) return String(); LPSPropValue pProp; if(GetOutlookProperty(OUTLOOK_DATA1, nID-3, pProp)) { strDisplayAs = MAPIEx::GetValidString(*pProp); MAPIFreeBuffer(pProp); return strDisplayAs; } return String(); #endif }
// only supports setting SMTP Email Addresses, sets both display properties, use SetEmailDisplayAs to set the // outlook DisplayAs property to some other text. You should check that the text is a valid SMTP email address // ie [email protected] because this function will allow any string bool MAPIContact::SetEmail(const String &szEmail, int nIndex) { ULONG nID = GetOutlookEmailID(nIndex); if(!nID) return false; #ifdef _WIN32_WCE return m_pPOOM ? m_pPOOM->SetProperty(m_pContact, nID, szEmail) : false; #else if(SetOutlookProperty(OUTLOOK_DATA1, nID-1, "SMTP")) { // we set the email field and both display properties if(!SetOutlookProperty(OUTLOOK_DATA1, nID, szEmail)) return false; if(!SetOutlookProperty(OUTLOOK_DATA1, nID+1, szEmail)) return false; if(!SetOutlookProperty(OUTLOOK_DATA1, nID-3, szEmail)) return false; return true; } return false; #endif }