Solved

Reading Outlook Contact Details using C#

Posted on 2008-06-20
3
1,737 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 15

Accepted Solution

by:
ozymandias earned 125 total points
ID: 21837246
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
ID: 21843186
at least, you can debug your  code and tell us which line throw such error.
0
 

Author Comment

by:atulmodi
ID: 21844137
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

MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary Displaying images in RichTextBox is a common requirement with limited solutions available. Pasting through clipboard or embedding into RTF content only support static images.  This article describes how to insert Windows control objects int…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…

734 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