C++ MAPI Address Book

   Extracting the e-mail addresses and the associated NT accounts from the global address list is easier to program and difficult to execute. Organizations have huge list of addresses to the tune of 50 to 100 thousands. But if the numbers are small, this sample code MAPI C++ address book can be used to extract the address book information.

   As in any other MAPI Client program, this also requires initialization of MAPI libraries using MAPIInitialize() function. The next will be to logon to the mailbox using MAPILogonEx() which has the access to the Global Address List.

   Then we use the pointer LPADRBOOK to the IAddrBook interface and get the global address list using HrFindExchangeGlobalAddressList. After this it is a classical case of getting the contents using GetContentsTable and HrQueryAllRows.

C++ MAPI Address Book - Sample:

   The following sample code logs on to the profile and prints all the addresses in the organization.
Warning: This could take longer time, if the address list is in many thousands.


#include <edk.h>

LPMAPISESSION pSession = NULL;

int main()
{

HRESULT hr = S_OK;
//Initialize MAPI libraries
hr = MAPIInitialize (NULL);

// logon to MAPI for extracting the address book. This can also be used to open the individual mail boxes.
hr = MAPILogonEx (NULL, "testprofile", NULL, MAPI_EXTENDED| MAPI_NEW_SESSION|
MAPI_LOGON_UI| MAPI_EXPLICIT_PROFILE,&pSession);
if (FAILED (hr))
{
    return E_FAIL;
}

ULONG cbeid = 0L;
LPENTRYID lpeid = NULL;
LPSRowSet pRow;
ULONG ulObjType;
LPMAPITABLE lpContentsTable = NULL;
LPABCONT lpGAL = NULL;
LPADRBOOK m_pAddrBook = NULL;

SizedSPropTagArray ( 3, sptCols ) = { 3,
PR_ENTRYID,
PR_DISPLAY_NAME,PR_ACCOUNT };

hr = pSession->OpenAddressBook(NULL,NULL,AB_NO_DIALOG,&m_pAddrBook);
if ( FAILED ( hr = HrFindExchangeGlobalAddressList ( m_pAddrBook,
&cbeid,
&lpeid ) ) )
{
    return hr;
}
if(FAILED(hr = m_pAddrBook->OpenEntry((ULONG) cbeid,
(LPENTRYID) lpeid,
NULL,
MAPI_BEST_ACCESS,
&ulObjType,
(LPUNKNOWN *)&lpGAL)))
{
    return hr;
}
if ( ulObjType != MAPI_ABCONT )
{
    return -2323;
}

//Free the entry id buffer
::MAPIFreeBuffer(lpeid);
if(FAILED(hr = lpGAL->GetContentsTable(0L, &lpContentsTable)))
{
    return hr;
}

if ( FAILED ( hr = HrQueryAllRows (lpContentsTable,(SPropTagArray*) &sptCols, NULL, NULL, 0,&pRow)))
{
    return hr;
}

char strName[200];

for(int x=0; x < pRow->cRows ;x++)
{
    printf("%s\n",pRow->aRow[x].lpProps[1].Value.lpszA);
}

if ( NULL != lpGAL)
{
    lpGAL -> Release ( );
    lpGAL = NULL;
}
if ( lpContentsTable )
{
    lpContentsTable -> Release ( );
    lpContentsTable = NULL;
}

m_pAddrBook->Release();
//Free all MAPI libraries
MAPIUninitialize();

}


   The testprofile should be replaced with the suitable one from the local computer.

C++ MAPI Address Book - Libraries Required:

 Add these libraries in the project settings--> Link --> Object/library modules.
   mapi32.lib Edkguid.lib Edkutils.lib Edkmapi.lib Addrlkup.lib Edkdebug.lib Version.lib Mblogon.lib.

Also in the Project Settings --> Link --> Category --> Input -->Ignore Libraries , add libc.lib and libcd.lib.

   When the program is compiled, if the " LINK : fatal error LNK1104: cannot open the file "mfc40.lib" " is seen, then this problem has to be resolved by Recompiling the MAPI Exchange Development Kit.

Close    To Top
  • Prev Article-Programming:
  • Next Article-Programming:
  • Now: Tutorial for Web and Software Design > Programming > win32 > Programming Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction