2012-11-02 22 views
8

Outllokから連絡先をMapi経由でインポートしたい。私は、さらに共有の連絡先をインポートする第2の工程でOutlook Mapiアクセス共有の連絡先

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

:標準の連絡先との 最初のステップは、問題ありません。私が見つけた唯一のものは

OpenSharedItem(sharedContacts.vcf) 

を使用していたが、私は私が開きたいファイル(共有項目)の名前を知りません。 誰かが共有の連絡先にアクセスする方法を知っていますか?

トビ


更新:VCF-ファイルでのヒントのための

感謝。しかし、どこで見つけるのですか?


アップデート2:私はOutlookSpyで遊ん

。私は(他のユーザーのために、もちろん異なっている)共有連絡先を持つが、唯一のIDを知ることによって、フォルダへのアクセスを得た:

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

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

私はIDを知らなくても、フォルダへのアクセスを取得するにはどうすればよいですか?

答えて

1

うーん... excatlyしたいしたいが、私はこれがあなたの問題のお手伝いをするとは思われません。この..Itであなたを助けるためにあなたの質問に対する解決策をいくつかのコード例を与えていますそれはタイトルで尋ねられるほとんどシンプルです。 あなただけ呼び出す必要があります:

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

を、これは私の問題を解決していないので、私はanother questionを聞いてきます!

0

私はOutlookから連絡先を取得するための、いくつかのプログラミングを行っています。 私のように

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

関連する問題