| 

.NET C# Java Javascript Exception

1
Hallo Leute,

habe schon etliche Suchen durchleuchtet, aber irgendwie komm ich nicht weiter. Wie man emails verschickt, kein Problem, aber hier ...

In einer VB.NET Applikation meldet sich der User mit seinem Windows.Login an, wenn die Informationen entsprechend in der Datenbank hinterlegt sind. Nun kommt es häufig vor, dass sich die Benutzer-Daten in Outlook wie Abteilung, Büro, ... ändern und diese möchte ich immer aktuell halten.

Im Globalen Addressbuch sind die Daten hinterlegt und über die Properties kann ich mir viele Infos anschauen, auch den Alias. Wie kann ich diese Info in der Anwendung abgreifen?

Die Infos der GAL auslesen geht ja relativ einfach:
Dim objOutlook As Outlook.Application = New Outlook.Application()
' Get NameSpace
Dim objOutlookoNS As Outlook.NameSpace = objOutlook.GetNamespace("MAPI")

Dim gal As Outlook.AddressList = objOutlook.Session.GetGlobalAddressList()


For Each addrEntry As Outlook.AddressEntry In gal.AddressEntries
'Debug.Print(addrEntry.Name) '& " - " & addrEntry.GetExchangeDistributionList.Alias
'If addrEntry.GetExchangeDistributionList.Alias = "MeinAlias" Then
' MessageBox.Show("Gefunden!!")
'End If
If addrEntry.Name = "Angezeigter Name" Then
MessageBox.Show("Gefunden!!")
End If
Next

Dim exchUser As Outlook.ExchangeUser = gal.AddressEntries("Angezeigter Name").GetExchangeUser()
Dim myAlias As Outlook.ExchangeDistributionList = gal.AddressEntries("MeinAlias").GetExchangeDistributionList()


Da das GAL aber mehr als 200.000 Einträge hat, würde es mir zulange dauern. Die Abfrage mit .GetExchangeUser() liefert mir den Namen, aber nicht ...
Geht das überhaupt den Alias abzufragen, so wie in der letzten Codezeile versucht - wohlwissend, dass das sich auf Verteilerlisten-Einträge bezieht?

Besten Dank für eure Hilfe
Jörg
20.06.2019
4 Antworten
0
Ich habe mich zwar selber noch nicht ausführlich damit beschäftigt, aber mein erster Ansatz wäre es, die Informationen über das Active Directory auszulesen.
21.06.2019
luedi 2,2k 1 9
Hatte ich auch erst überlegt, aber da braucht man ja speziellen User/Password Zugriff, den man erst beantragen muss ...

Mit dem Global Addressbook arbeitet jeder im Unternehmen, deswegen verfügbar. Irgendeine ander Idee?
jtrumpfheller 21.06.2019
0
Um nochmal klar zumachen, um was es mir geht:
Wenn ich in Oulook das Adressbuch (Globale Adressliste od. All Users) aufrufe, nach einem Namen filtere und mir die Property-Seite dazu anzeigen lasse, wird mir auf dem Reiter "Allgemein" das Feld "Alias" angezeigt. Wie kann ich diesen Alias programiertechnisch auslesen? Bin am Verzweifeln. Über jegliche Hilfe wäre ich dankbar.
21.06.2019
0
wie gesagt, ich kenne mich nicht so gut aus im Outlook-Objektmodell. Ich habe aber mal in der Doku nachgeschaut. Es gibt im Outlook-Objektmodell eine Klasse ExchangeUser. In dieser gibt es eine Property Alias. Ich denke, dass du diese Property suchst. Vielleicht hilft dir daa ja weiter. Hier noch der Link zur Dokumentation:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.outlook.exchangeuser?view=outlook-pia
22.06.2019
luedi 2,2k 1 9
Ja, das hab ich auch schon probiert:
Imports Microsoft.Office.Interop
...
Dim objOutlook As Outlook.Application = New Outlook.Application()
Dim gal As Outlook.AddressList = objOutlook.Session.GetGlobalAddressList()
Dim cuAE_Name As String = objOutlook.Session.CurrentUser.AddressEntry.Name '"Mein angezeigter Name in Outlook"
Dim exchUser As Outlook.ExchangeUser = gal.AddressEntries(cuAE_Name).GetExchangeUser 'aufeinmal bin es nicht mehr ich???
Dim myalias As String = exchUser.Alias 'der alias des anderen

Weiß jemand woran das liegen könnte?
jtrumpfheller 25.06.2019
0
Ok, meinen letzten Kommentar hab ich jetzt selbst herausbekommen. Ist der Name den man hier herausbekommt länger als 40 Zeichen, kommt Grütze raus.

Dim cuAE_Name As String = objOutlook.Session.CurrentUser.AddressEntry.Name '(z.B. "LangerNachname, LangerVorname (Firma XYZ)"

Gibt man diesen Namen dann bei
Dim exchUser As Outlook.ExchangeUser = gal.AddressEntries(cuAE_Name).GetExchangeUser

ein, wird das erstbeste Ergebnis zurückgegeben.
Mit
Dim exchUser As Outlook.ExchangeUser = gal.AddressEntries("LangerNachname, LangerVorname (Firma XY").GetExchangeUser

wird der richtige ExchangeUser zurückgegeben.

Also in der Doku zu addressentry.name habe ich keine Begrenzung dazu gesehen.
25.06.2019

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH