2012-11-02 24 views
8

Mapi üzerinden Outllok kişilerini almak istiyorum. Ben ayrıca Paylaşılan kişileri almak istediğiniz İkinci adımdaOutlook Mapi accessed by contact

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

: Standart kişiyle ilk adımı sorun yok. Bulduğum tek şey

OpenSharedItem(sharedContacts.vcf) 

kullanıyordum ama ben açmak istediğiniz dosya (paylaşılan öğenin) adını bilmiyorum. Birisi paylaşılan kişilere nasıl erişileceğini biliyor ve bana yardımcı olabilir mi?

Tobi


Güncelleme: vcf-Files ile ipucu

teşekkürler. Ama onları nerede bulabilirim?


Update2: Ben OutlookSpy etrafında oynanan

. Paylaşılan kişilerden ile klasöre erişimi var, ama sadece (diğer kullanıcılar için elbette farklıdır) id bilerek:

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

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

nasıl id bilmeden klasöre erişimi alabilirim?

cevap

1

... excatly istediğiniz istiyorum ama bu sorun size yardımcı olacağını düşündüğümüz değil size soru olarak çözüm bu ..it size yardım etmesi için bazı örnek kod edilir veriyorum başlıkta sorulan hemen hemen basittir. Sadece arayın gerekir:

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

bu sorunumu çözmez Çünkü another question soracaktır!

0

ben görünüm dan temas olsun bazı programlama yaptık. Ben Eh

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

Kod için teşekkürler, ancak bunu zaten yapıyorum. Standart veya önerilen kişileri içe aktarmak değil, paylaşılan kişileri okumak sorun değildir. – Tobias