2012-11-02 24 views
8

मैं मैप के माध्यम से आउटलोक से संपर्क आयात करना चाहता हूं।आउटलुक मैपी एक्सेस साझा संपर्क

MAPIFolder contactObjects = 
outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts); 
foreach (ContactItem contactObject in contactObjects.Items) { 
    ... import contact ... 
} 

एक दूसरे चरण के लिए मैं इसके साथ ही साझा किए गए संपर्क आयात करना चाहते हैं में: मानक संपर्क के साथ सबसे पहले कदम कोई समस्या नहीं है। केवल एक चीज जो मैंने पाया वह

OpenSharedItem(sharedContacts.vcf) 

परन्तु मुझे फ़ाइल (साझा आइटम) का नाम पता नहीं है जिसे मैं खोलना चाहता हूं। क्या कोई जानता है कि साझा संपर्कों का उपयोग कैसे करें और मेरी मदद कर सकते हैं?

टोबी


अद्यतन:

vcf-फाइल्स के साथ संकेत के लिए धन्यवाद। लेकिन मैं उन्हें कहां पा सकता हूं?


Update2:

मैं OutlookSpy के साथ चारों ओर खेला। मैं साझा किए गए संपर्क के साथ फ़ोल्डर के लिए उपयोग मिल गया है, लेकिन केवल आईडी (अन्य उपयोगकर्ताओं के लिए अलग पाठ्यक्रम की है) जानने के द्वारा:

var ns = outlookObj.GetNamespace("MAPI"); 
var flr = ns.GetFolderFromID("00000000176A90DED92CE6439C1CB89AFE3668F90100D1AD8F66B576B54FB731302D9BB9F6C40007E4BAC5020000"); 

foreach (var contactObject in flr.Items) { 
     ... 
} 

मैं कैसे आईडी जानने के बिना फ़ोल्डर के लिए उपयोग मिलता है?

उत्तर

1

खैर यह शीर्षक में पूछा जाता है लगभग सरल है। मैं another question पूछना होगा क्योंकि यह मेरी समस्या का समाधान नहीं करता

Recipient recip = Application.Session.CreateRecipient("Firstname Lastname"); 
MAPIFolder sharedContactFolder = Application.Session.GetSharedDefaultFolder(recip, OlDefaultFolders.olFolderContacts); 

: तुम सिर्फ कॉल करने के लिए की जरूरत है!

2

आप या तो स्पष्ट रूप से vCard फ़ाइलें पार्स करने के लिए की आवश्यकता होगी या आप मुक्ति उपयोग कर सकते हैं - यह RDOContactItem .Import का उपयोग कर vCard फ़ाइलें आयात करने के लिए अनुमति देता है - http://www.dimastr.com/redemption/RDOMail.htm#methods

+0

vCard-files कैसे ढूंढें? – Tobias

0

मैं दृष्टिकोण से संपर्क पाने के लिए कुछ प्रोग्रामिंग किया है। मैं आप इस ..It साथ आप को मदद करने के लिए कुछ उदाहरण कोड के रूप में सवाल का हल दे रहा हूँ नहीं है excatly आप चाहते हैं चाहते हैं, लेकिन मैं इससे आपकी समस्या के साथ तुम्हारी मदद करेगा लगता है ...

using System.Collections.Generic; 

// ... 

private List<Outlook.ContactItem> GetListOfContacts(Outlook._Application OutlookApp) 

    { 
    List<Outlook.ContactItem> contItemLst = null; 
    Outlook.Items folderItems =null; 
    Outlook.MAPIFolder mapiFoldSuggestedConts = null; 
    Outlook.NameSpace nameSpc = null; 
    Outlook.MAPIFolder mapiFoldrConts = null; 
    object itemObj = null; 

    try 
    { 

     contItemLst = new List<Outlook.ContactItem>(); 
     nameSpc = OutlookApp.GetNamespace("MAPI"); 
     // getting items from the Contacts folder in Outlook 
     mapiFoldrConts = 
      nameSpc.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); 

     folderItems = mapiFoldrConts.Items; 
     for (int i = 1; folderItems.Count >= i; i++) 
     { 

      itemObj = folderItems[i]; 
      if (itemObj is Outlook.ContactItem) 
       contItemLst.Add(itemObj as Outlook.ContactItem); 
      else 
       Marshal.ReleaseComObject(itemObj); 
     } 

     Marshal.ReleaseComObject(folderItems); 
     folderItems = null; 
     // getting items from the Suggested Contacts folder in Outlook 
     mapiFoldSuggestedConts = nameSpc.GetDefaultFolder( 

      Outlook.OlDefaultFolders.olFolderSuggestedContacts); 

     folderItems = mapiFoldSuggestedConts.Items; 

     for (int i = 1; folderItems.Count >= i; i++) 
     { 

      itemObj = folderItems[i]; 
      if (itemObj is Outlook.ContactItem) 
       contItemLst.Add(itemObj as Outlook.ContactItem); 

      else 
       Marshal.ReleaseComObject(itemObj); 
     } 
    } 

    catch (Exception ex) 
    { 
     System.Windows.Forms.MessageBox.Show(ex.Message); 
    } 

    finally 
    { 

     if (folderItems != null) 
      Marshal.ReleaseComObject(folderItems); 
     if (mapiFoldrConts != null) 
      Marshal.ReleaseComObject(mapiFoldrConts); 
     if (mapiFoldSuggestedConts != null) 
      Marshal.ReleaseComObject(mapiFoldSuggestedConts); 
     if (nameSpc != null) Marshal.ReleaseComObject(nameSpc); 
    } 

    return contItemLst; 

} 
+0

कोड के लिए धन्यवाद, लेकिन मैं पहले से ही ऐसा करता हूं। मानक या सुझाए गए संपर्कों को आयात करने में समस्या नहीं है, लेकिन साझा संपर्कों को पढ़ने के लिए। – Tobias

संबंधित मुद्दे