Solved

Reading Outlook Contact Details using C#

Posted on 2008-06-20
3
1,723 Views
Last Modified: 2013-12-16
Hello,
i am using Outlook 2007 and C#.NET 2005 to search the contact from Outlook.
though i have developed the applciation and it is working fine but i have a problem with one of my laptop. in that i have installed office 2007.

i have tested this with office 2007 and also office 2003 on XP, Windows 2003 and Vista machines.
i am not able to understand the problem that i am getting. when i run my application on my laptop i get error "Object referecne not set to an instance of object".

i am attaching the Code snippet that i am using

in the code i am getting error between linenumber 101  and linenumber 104. linenumber is a variable which is assigend line number value to trace the linenumber where error occured.

Regards.
private void btnSearch_Click(object sender, EventArgs e)

{

     int linenumber=68;

     searchResultList.Clear();

     bool bloop = false;

     string owner="";

     OutLook.Items contactItems = null;

     try

     {

          linenumber=68;

          OutLook.Application outapp = new Microsoft.Office.Interop.Outlook.ApplicationClass();

          OutLook.NameSpace outnamespace = outapp.GetNamespace("MAPI");

          OutLook.MAPIFolder contactsFolder = outnamespace.GetDefaultFolder (OutLook.OlDefaultFolders.olFolderContacts);

          contactItems = contactsFolder.Items;

          owner = outnamespace.CurrentUser.AddressEntry.Name;

          linenumber=74;

     }

     catch

     {

          MessageBox.Show("Either Outlook is not available or Outlook has reject your request for connection.", "Outlook Search", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

          return;

     }
 

     try

     {

           if (contactItems.Count == 1 )

           {

                OutLook.ContactItem contact = (OutLook.ContactItem)contactItems.GetFirst();//  .GetNext();

                linenumber=87;

                if (contact.FirstName.ToUpper().StartsWith(txtSearchBox.Text.Trim().ToUpper()))

                {

                    linenumber = 90;

                    Result searchresult = new Result();

                    string name = contact.Title + " " + contact.FirstName + " " + contact.MiddleName + " " + contact.LastName;

                        searchresult.showResult(name, contact.CompanyName, contact.Email1Address, contact.MobileTelephoneNumber);

                    searchresult.ShowDialog();

                    linenumber = 95;

                }

           }

           else if (contactItems.Count > 1)

           {

               bool found = false;

               linenumber = 101;

               foreach (OutLook.ContactItem items in contactItems)

               {

                   if (items.FirstName.ToUpper().StartsWith(txtSearchBox.Text.Trim().ToUpper()))

                   {

                       linenumber = 104;

                       object matcheditems = items;

                       searchResultList.Add(matcheditems);

                       found = true;

                       linenumber = 109;

                    }

               }

               linenumber = 113;

               if (found == false)

               {

                   MessageBox.Show("No record found matching your criteria. Please verify specified search criteria.", "Outlook Contact", MessageBoxButtons.OK, MessageBoxIcon.Information);

               }

               else

               {

                   if (searchResultList.Count == 1)

                   {

                       linenumber = 122;

                       OutLook.ContactItem cntct = (OutLook.ContactItem)searchResultList[0];

                       Result searchresult = new Result();

                       string name = cntct.Title + " " + cntct.FirstName + " " + cntct.MiddleName + " " + cntct.LastName;

                       searchresult.showResult(name, cntct.CompanyName, cntct.Email1Address, cntct.MobileTelephoneNumber);

                       searchresult.ShowDialog();

                       linenumber = 128;

                   }

                   else

                   {

                       linenumber = 132;

                       MatchList matchlist= new MatchList(searchResultList);

                       matchlist.showMatchList();

                       matchlist.ShowDialog();

                       linenumber = 136;

                   }

               }

           }

           else

               MessageBox.Show("No record found matching your criteria. Please verify specified search criteria.", "Outlook Contact", MessageBoxButtons.OK, MessageBoxIcon.Information);      

      }

      catch (Exception ex)

      {

          MessageBox.Show("Exception after Line No. : " +linenumber.ToString()+" for "+ex.Message+"\nTotal match found "+searchResultList.Count.ToString(), "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);        

      } 

 }

Open in new window

0
Comment
Question by:atulmodi
3 Comments
 
LVL 15

Accepted Solution

by:
ozymandias earned 125 total points
Comment Utility
I would suggest that either :

>> foreach (OutLook.ContactItem items in contactItems)

the collection contactItems has items in it that are null or :

>>if (items.FirstName.ToUpper().

you have items where the FirstName is null

surely you can tell this by setting a break point and looking in the stack ?

0
 
LVL 5

Expert Comment

by:rendaduiyan
Comment Utility
at least, you can debug your  code and tell us which line throw such error.
0
 

Author Comment

by:atulmodi
Comment Utility
Hello,
i have already tested it. i have tesed the EXE of four machines and it is working fine even at the place where i have not added any contact List.
only i am having problem on one of my laptop. and it is not a development machine.

Regards.
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

Normally the drop down box control found in the .Net framework tools is able to select just one data and value at a time, which is displayed on the text area.   But what if you want to have multiple values to be selected in the drop down box? As …
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now