Laden...

Wie kann ich Benutzerdefinierte Felder aus Outlook-Kontakten auslesen?

Erstellt von kohleit vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.874 Views
K
kohleit Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren
Wie kann ich Benutzerdefinierte Felder aus Outlook-Kontakten auslesen?

Hallo community.

Wie man Kontakte aus Outlook ausliest wurde hier schon mehrmals im Forum gezeigt.
In Outlook unter Kontakte hat man die Möglichkeit die Felder zu erweitern.

Ich habe unter Kontakte 3 weitere Felder hinzugefügt und möchte diese beim auslesen der Kontakte mit auslesen.

Leider versuche ich vergebens diese 3 "user defined" Felder auszulesen. Ich finde die angelegten Felder nicht!


 var outlookApplication = new Microsoft.Office.Interop.Outlook.Application();
            NameSpace mapiNamespace = outlookApplication.GetNamespace("MAPI");
            MAPIFolder contacts = mapiNamespace.GetDefaultFolder(OlDefaultFolders.olFolderContacts);

            for (int i = 1; i < contacts.Items.Count + 1; i++)
            {
                var contact = (ContactItem)contacts.Items[i];
                //var contact = (ContactItem)contacts.CustomViewsOnly[i];
                Console.WriteLine(contact.FullName);
                Console.WriteLine(contact.Body);
                Console.WriteLine(contact.User1);
                Console.WriteLine("*");

Kann mir hier jemand einen Hinweis in die richtige Richtung geben.

Vielen Dank!
lg

4.931 Beiträge seit 2008
vor 3 Jahren

Was steht denn in UserProperties? Evtl. einfach mal im Debugger alle Eigenschaften der Variable contact anschauen.

K
kohleit Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren

Hallo Danke für den Tipp.

Leider muss ich hier sagen ich bin ein "googler" und kein Programmierer bin. Daher tue ich mir mit der Anweisung ein wenig schwer.

Was ich raus gefunden habe ist, dass man in ein User defined Field (UDF) folgendermaßen schreibend zugreifen kann:


                contact.UserProperties["BERI"].Value = "9";
//Da steckt ein __ComObject drin mit dem ich nichts Anfangen kann. (noch nicht)
                contact.Save();

Wie kann ich nun sagen gib mir den Inhalt von dem Feld "BERI".

Quasi so etwas:


Console.WriteLine(contact.UserProperties["BERI"]);

Sorry für meine Unwissenheit!
PS. Der oben angegeben Code funktioniert natürlich nicht

lg

4.931 Beiträge seit 2008
vor 3 Jahren

Auch beim Lesen auf Value zugreifen:


Console.WriteLine(contact.UserProperties["BERI"].Value);

PS: Bzgl. Debuggen s.a. [Artikel] Debugger: Wie verwende ich den von Visual Studio?

K
kohleit Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren

Habe es selbst raus gefunden.


             UserProperty prop = contact.UserProperties.Find("Beri");

                if(prop != null)
                    Console.WriteLine(prop.Value);

Bin ein wenig eintäuscht, habe mir mehr Input vom Forum erhofft.

Eventuell braucht das jemand.

T
2.219 Beiträge seit 2008
vor 3 Jahren

@kohleit
Im Endeffekt machst du das gleich, was dir Th69 vorgeschlagen hat.
Nur anstelle des Find, kannst du auch direkt über ["Beri"] auf die UserProperty zugreifen, da du ja die entsprechende Property kennst und diese nicht suchen müsstest.

Das Forum bzw. Th69 hat dir schon die konkrete Antwort geliefert, warum sollten dann noch 10 oder mehr Leute dir weitere Antworten schreiben?
Vielleicht solltest du auch die Doku anschauen und wie von Th69 vorgeschlagen auch den Debugger verwenden.
Damit kann man solche Sache auch durch einfaches prüfen der jeweiligen Instanzen und deren Eigenschaften lösen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.