Hi @ all,
das hier ist gleichzeitig neben einer Frage an euch auch ein Gruß 😃 und mein erster Beitrag im Forum 😃
Ich habe folgendes Problem. Und zwar nehme ich einen automatisierten Abgleich der Outlook-Kontaktdaten vor. Bisher werden nur die Kontakte, die im lokalen Adressbuch liegen, abgeglichen.
Allerdings wird vermehrt nun auch die Öffentlichen Ordner benutzt. Hierbei liegt in einer bestimmten Ordnerstruktur ein weiteres ADressbuch, dass ich ebenfalls gerne abgleichen möchte.
Öffentliche Order\Alle Öffentlichen Ordner\Kontakte\
Das Adressbuch selber heißt Alle Kontakte.
Wie kann ich jetzt mittels Quellcode zu diesem ADressbuch hin navigieren und dieses verwenden?!
Bereits viel gegoogelt und auch in diesem Forum dazu etwas gefunden, aber bisherige Versuche waren fruchtlos 😦
Habt ihr mir Tipps?!
http://support.microsoft.com/kb/310244/de versucht, aber nicht wirklich geklappt...
Grüße
Das ist aus einem Nachbarthread:
Outlook API Contact move to public folder error
Er hatte ein ähnliches Problem, ist aber anscheinend auch nicht weiter gekommen, bzw. hat, sofern es geklappt hat, keine Lösung gepostet...
Habe ich eine Möglichkeit, über AddressLists auf das Globale Adress Buch zuzugreifen?!
Vllt. in etwa dieser Richtugn?!
AddressLists adList = mapiNamespace.AddressLists;
AddressList AdressGeblubber = adList["Global Address List"];
Console.WriteLine(AdressGeblubber.Name);
?!
Habe in der Zwischenzeit versucht, selber eine Lösung zu finden. Allerdings nicht den Durchbruch geschafft. Bin dann auf die Seite von Msdn gekommen (http://support.microsoft.com/kb/310244/de) und habe da was tolles gefunden
Outlook._Application olApp = new Outlook.ApplicationClass();
Outlook._NameSpace olNS = olApp.GetNamespace("MAPI");
Outlook.MAPIFolder oFolder = olNS.GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders);
Console.Write(oFolder.Name);
Console.ReadKey();
Outlook._Folders oFolders = olNS.Folders;
Outlook.MAPIFolder oPublicFolder = oFolders.[B]Item[/B]("Öffentliche Ordner");
oFolders = oPublicFolder.Folders;
Outlook.MAPIFolder oAllPFolder = oFolders.[B]Item[/B]("Alle Öffentlichen Ordner");
oFolders = oAllPFolder.Folders;
Outlook.MAPIFolder oMyFolder = oFolders.[B]Item[/B]("Kontakte");
Console.Write(oMyFolder.Name);
zu früh gefreut, funktioniert leider noch nicht ganz. Die dick markierten Stellen markiert er und sagt mir keine Definition gibt und ob eventuell eine Using-Direktive oder ein Assemblyverweis fehlt?!
Eingebunden habe ich noch folgendes inklusive Outlook Library.
using Microsoft.Office.Interop.Outlook;
using Outlook = Microsoft.Office.Interop.Outlook;
Was fehlt, bzw. mache ich falsch?!
Für Hilfe wäre ich sehr dankbar
Grüße
Hallo Mr.Irish.Bastard,
das Outlook-Objektmodell hat einige Beschränkungen und ist in verbindung mit öffentlichen Ordnern nicht unbedingt das stabilste. Ich möchte Dir deshalb empfehlen, sowas mit Redemption (http://www.dimastr.com/redemption/) zu programmieren. Die Dokumentation dazu findest Du hier: http://www.dimastr.com/redemption/
Redemption funktioniert unabhängig von Outllook und kapselt direkt die MAPI von Windows (MAPI ist auch die Basis von Outlook). Outlook-Objekte können sogar in Redemption-Objekte gecastet werden. Mit Redemption hast Du den Exchange Server im Griff.
Öffentliche Ordner werden in der nächsten Exchange Server Version (also die nach 2007) ohne direkten Ersatz wegfallen. Deshalb würde ich mir überlegen, ob es sinnvoll ist, neue Projekte noch darauf aufzubauen. Die Nachfolgetechnologie für zentrale Informationsablage heißt SharePoint. Größere Sachen würde ich definitiv nicht mehr auf öffentlichen Ordnern aufbauen.