/// <summary> /// Liest über die Klasse XMLReader die Matchingliste ein. /// </summary> /// <param name="SMTPAdresse">Die SMTP Adresse</param> /// <param name="ContactFolderName">Der Name der Ordners (zb. "Arges Intern")</param> /// <returns></returns> public static List <Matching> GetList(string SMTPAdresse, string ContactFolderName) { var path = ExchangeSync.binaryPath + @"\MatchingList\" + SMTPAdresse + "_" + ContactFolderName + "_matchingList.xml"; List <Matching> _list = null; _list = XMLReader.readFromXml(path); return(_list); }
/// <summary> /// Läuft mit einer Schleife über alle Kontakte im Ordner (zb. "Arges Intern") des Postfaches. /// Es wird das Subject, UniqueId und das externe Feld "PublicID" ausgelesen und als Matching in einer Liste gespeichert. /// Nach der Schleife wird überprüft ob der Ordner "MatchingList" vorhanden ist, falls nicht wird er erstellt, /// und die Liste mit Matchings wird über die Klasse XMLReader in eine Datei gespeichert. <br/> /// <i>Die Listen werden verwendet um zu jedem Kontakt in jedem Postfach sein Pendant aus dem öffentlichen Ordner zu finden.</i> /// </summary> /// <param name="service">Das ExchangeService Objekt</param> /// <param name="SMTPAdresse">Die SMTP Adresse</param> /// <param name="ContactFolderName">Der Name der Ordners (zb. "Arges Intern")</param> public static void Create(ExchangeService service, string SMTPAdresse, string ContactFolderName) { if (service != null) { var path = ExchangeSync.binaryPath + @"\MatchingList\" + SMTPAdresse + "_" + ContactFolderName + "_matchingList.xml"; var PublicRoot = Folder.Bind(service, WellKnownFolderName.Contacts); SearchFilter.IsEqualTo filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, ContactFolderName); FindFoldersResults FindPublicContactFolder = service.FindFolders(PublicRoot.Id, filter, new FolderView(1)); var ContactFolder = FindPublicContactFolder.Folders[0]; Guid MyPropertySetId = new Guid("{57616c7a-656e-6261-6368-536173636861}"); ExtendedPropertyDefinition extendedPropertyDefinition = new ExtendedPropertyDefinition(MyPropertySetId, "PublicID", MapiPropertyType.String); // EXTENDED PROP READ ItemView view = new ItemView(int.MaxValue); view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, extendedPropertyDefinition); FindItemsResults <Item> findResults; var matchingList = new List <Matching>(); do { findResults = service.FindItems(ContactFolder.Id, view); foreach (Item item in findResults.Items) { string PublicID; if (item.ExtendedProperties.Count > 0) { // Display the extended name and value of the extended property. item.TryGetProperty(extendedPropertyDefinition, out PublicID); var entry = new Matching(item.Subject, PublicID, item.Id.UniqueId); matchingList.Add(entry); } } view.Offset += findResults.Items.Count; } while (findResults.MoreAvailable == true); if (!Directory.Exists(ExchangeSync.binaryPath + @"\MatchingList")) { Directory.CreateDirectory(ExchangeSync.binaryPath + @"\MatchingList"); } XMLReader.saveToXml(path, matchingList); } }