Click here to Skip to main content
Click here to Skip to main content

Importing contacts from Outlook

By , 20 Feb 2003
Rate this:
Please Sign up or sign in to vote.

Sample Image - maximum width is 600 pixels

Introduction

Outlook has become a de-facto standard in Personal Information Management software. Almost everyone uses this software for managing their needs. There arises the need for programmatically manipulating information stored in Outlook. Microsoft has provided the Outlook Object Model for this very same purpose. A closer look at the samples on MSDN reveals that almost all samples are in Visual Basic. What should the (not so poor Wink | ;-) ) C++ programmer do for this? Since the Outlook Object Model is a collection of COM interfaces, any COM compliant language can useit. This sample can import contacts from any contacts folder in Outlook.

To use Office/Outlook Objects in C++, following files needs to be imported...

//For Office XP
#import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll" named_guids
#import "E:\Microsoft Office\Office10\MSOUTL.OLB" \ no_namespace
    exclude("_IRecipientControl",    "_DRecipientControl");
//For Office 2000 
#import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll" named_guids
#import "E:\Microsoft Office\Office10\MSOUTL.OLB" \ no_namespace
    exclude("_IRecipientControl", "_DRecipientControl");
//Code to import Contacts...

_ApplicationPtr pApp;
_ItemsPtr pItems;
MAPIFolderPtr pFolder;
_ContactItemPtr pContact;
  
HRESULT hr;

try
{

  hr=pApp.CreateInstance(__uuidof(Application));
  if (FAILED(hr))
  {
    MessageBox("Unable to instantiate Outlook.",
               "Outlook Error",MB_OK);
    return;
  }

  if (m_Option.GetCheck()) //default outlook contacts folder
  {
    pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->
                    GetDefaultFolder(olFolderContacts);
    if (pFolder==NULL)
    {
      MessageBox("Could not find default contacts folder.",
                 "Outlook Error");
      return;
    }
    
  }
  else //display folder selection window
  {
    pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->PickFolder();
    if (pFolder==NULL)
      return;

    if (pFolder->GetDefaultItemType()!=olContactItem)
    {
      MessageBox("Select folder is not a Contact folder.",
                 "Outlook Contacts");
      return;
    }
  }

  pItems=pFolder->GetItems();
  if (pItems==NULL)
  {
    MessageBox("Unabel to get Contact Items.",
               "Outlook Error");
    return;
  }

  pContact=pItems->GetFirst();


  m_ContactList.ResetContent();

  while(1)
  {
    if (pContact==NULL)
      break;
    CString strTemp;
    strTemp=(char *)pContact->GetFullName();
    strTemp=strTemp + "<";
    strTemp=strTemp + (char *)pContact->GetEmail1Address();
    strTemp=strTemp + ">";
    m_ContactList.AddString(strTemp);

    pContact=pItems->GetNext();
  }

}
catch(_com_error &e)
{
  MessageBox((char *)e.Description());
}

This sample imports contact information but a slight modification will enable this to import any other information from Outlook as well. This includes Appointment Items, Email Messages, Notes, Tasks, and more. For example, to import Appointment Items from a Calendar folder one just needs to make an object of _AppointmentItemPtr smart pointer class instead of _ContactItemPtr.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Deepesh Dhapola
Web Developer
India India
www.d2labs.com
blogs.d2labs.com

Comments and Discussions

 
Questionvb.net PinmemberMember 984981522-Feb-13 0:50 
QuestionAny Chance of getting the source in C# or vb.net? Pinmember99pshop24-Jan-11 10:41 
QuestionNeed to Import e-mail attachments to C# program PinmemberKasunmit15-May-10 17:29 
GeneralCheck the alias Pinmemberfbi56fbi6-Sep-09 22:14 
QuestionProblem with Outlook 2007 Pinmemberraulhmacias15-Apr-09 14:40 
QuestionRe: Problem with Outlook 2007 Pinmemberandkeller15-Jun-09 20:52 
AnswerRe: Problem with Outlook 2007 Pinmemberrbrunton27-Jul-09 1:14 
AnswerRe: Problem with Outlook 2007 Pinmemberhufubin13-Nov-09 20:01 
AnswerRe: Problem with Outlook 2007 PinmemberMember 383426513-Oct-10 0:49 
Generalgetting mails from msoutlook Pinmemberalexenoy16-Mar-06 0:48 
QuestionHow do I do all this using C# PinmemberNewbieDude15-Mar-06 21:05 
QuestionHow can I get images from e-mail message? PinmemberZahid Younas6-Jan-06 19:38 
QuestionHow can I get web-page property using MAPI Pinmembertoddor_sturt28-Dec-05 15:42 
GeneralAccessing other user's Outlook folders PinmemberKokas1-Nov-05 2:19 
QuestionHOW TO don't show waring Dialog? Pinmemberwangsongshan11-Sep-05 19:30 
AnswerRe: HOW TO don't show waring Dialog? PinmemberDeepesh Dhapola11-Sep-05 19:36 
GeneralRe: HOW TO don't show waring Dialog? Pinmembergoebish26-Apr-06 22:24 
GeneralRe: HOW TO don't show waring Dialog? Pinmembercanido14-Jun-07 23:24 
Answer-- HERE IS HOW TO GET AROUND THE WARNING -- PinmemberMember 60417929-Jul-08 12:43 
QuestionRe: HOW TO don't show waring Dialog? Pinmemberlicj200821-Jul-07 23:31 
GeneralImporting messages PinmemberSloanCode15-Aug-05 0:31 
GeneralOutLook2003 security problem Pinmembernkzz6-Apr-05 20:56 
GeneralUnable to instantiate Outlook Pinmemberriki_risnandar19-Mar-05 17:19 
GeneralRe: Unable to instantiate Outlook Pinmemberbharadwajgangadhar5-Oct-05 4:25 
GeneralRe: Unable to instantiate Outlook PinmemberZahid Younas6-Jan-06 0:58 
GeneralRe: Unable to instantiate Outlook Pinmemberriki_risnandar8-Jan-06 16:02 
GeneralRe: Unable to instantiate Outlook Pinmemberadityasen14-Dec-09 18:45 
GeneralOnly one contact PinmemberRafael de Pablo9-Dec-04 11:15 
GeneralA little Query PinmemberThatsAlok27-Sep-04 3:40 
QuestionHow To deal with Attachment PinmemberThatsAlok27-Sep-04 3:29 
GeneralRe: Outlook 2003 Problem PinsussAnonymous7-Sep-04 0:36 
QuestionHow to identify the mail ids while fetching from the mail object PinmemberKoundinya23-Aug-04 2:56 
QuestionHow to save the outlook mail as text file PinmemberKoundinya23-Aug-04 2:51 
GeneralWhere to find MS Outlook C++ Reference Pinmemberd00_ape11-Jul-04 22:45 
Questionenumerating accounts? Pinmemberkanetheterrible116-Jun-04 18:49 
GeneralOutlook 2003 Problem PinmemberMike Beckerleg30-Apr-04 0:44 
Generalmaking this application a Dynamic Link Librarie Pinmemberaspro07722-Apr-04 23:36 
GeneralRe: making this application a Dynamic Link Librar Pinmemberaspro07722-Apr-04 23:45 
GeneralRe: making this application a Dynamic Link Librarie Pinmemberaspro07723-Apr-04 0:15 
GeneralObject Model Guard for Outlook 2000 Service Pack 2 and later versions PinmemberAnthony_Yio21-Apr-04 17:27 
GeneralRe: Object Model Guard for Outlook 2000 Service Pack 2 and later versions PinmemberDeepesh Dhapola21-Apr-04 19:05 
GeneralRe: Object Model Guard for Outlook 2000 Service Pack 2 and later versions PinmemberMike Beckerleg29-Apr-04 23:17 
GeneralAppointments Objects PinmemberRodrigo Vaz8-Apr-04 4:26 
GeneralAbout certificate in Outlook Contact PinmemberRobinzo769521-Mar-04 20:54 
GeneralUnable to instantiate Outlook under Console PinmemberWindSpring20-Mar-04 20:21 
GeneralRe: Unable to instantiate Outlook under Console PinmemberDeepesh Dhapola21-Mar-04 22:43 
GeneralRe: Unable to instantiate Outlook under Console PinmemberJ W14-May-04 2:48 
GeneralRe: Unable to instantiate Outlook under Console PinmemberDeepesh Dhapola14-May-04 6:12 
GeneralUnable to instantiate Outlook PinmemberHockey30-Jan-04 23:48 
GeneralRe: Unable to instantiate Outlook PinmemberHockey31-Jan-04 0:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140415.2 | Last Updated 21 Feb 2003
Article Copyright 2003 by Deepesh Dhapola
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid