Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Email Adresse aus dem Active Directory lesen (https://www.delphipraxis.net/106827-email-adresse-aus-dem-active-directory-lesen.html)

cherry 17. Jan 2008 11:53


Email Adresse aus dem Active Directory lesen
 
Hi Leuts

ich kann auf diese Weise Problemlos einen User aus dem AD lesen:
Delphi-Quellcode:
 
ADsGetObject('WinNT://' + domain + '/' + username, IADsUser, usr);
Nur leider steht mir dann die property EmailAddress NICHT zur Verfügung, laut MSDSN stimmt das auch...

Auf diese Weise kriege ich die Emailadresse:
Delphi-Quellcode:
ADsGetObject('LDAP://CN=Hans Meyer,OU=Bla,OU=bla,OU=Users,OU=Thun,DC=thun,DC=lan',IADsUser, usr);
Nur leider weiss ich 1. den CN nicht und 2. was noch viel schlimmer ist, ich möchte nicht den ganzen OU Pfad mitgeben müssen.
OK...

Wie kriege ich nun die Email Adresse eines Benutzers wenn ich nur folgende Informationen habe:

Domäne, Username.

???

Vielen Dank schon ma

sakura 17. Jan 2008 12:03

Re: Email Adresse aus dem Active Directory lesen
 
Das usr Objekt aus Deiner ersten Abfrage liefert Dir doch aber den vollständigen OU-Pfad zurück, oder? Mit diesem kannst Du dann nochmal die zweite Abfrage starten und dann die Email auslesen.

...:cat:...

cherry 17. Jan 2008 12:06

Re: Email Adresse aus dem Active Directory lesen
 
hi sakura...

daran habe ich auch schon gedacht (weiss jedoch nicht welche property des usr Objekts es ist), aber das kanns ja irgendwie auch nicht sein, dann braucht mein Programm doppelt so lange wie mit einer Abfrage. Es soll möglichst effizient von statten gehen, Zeit spielt eine Rolle...

sakura 17. Jan 2008 12:11

Re: Email Adresse aus dem Active Directory lesen
 
Der Haken, welchen Du hast, ist dass Du den OU Pfad benötigst, wie Du schon sagtest. Da dieser von User zu User unterschiedlich sein kann (muss), musst Du diesen heraus bekommen. Am Ende, egal welchen Weg Du wählst, musst Du über eine ADs-Abfrage. Somit hast Du immer mind. zwei Abfragen, da kommst Du nicht herum. Wenn Du die Daten für alle Nutzer ermitteln willst, dann gehe am besten gleich rekursiv durch die OU-Ebenen, das würde dann am schnellsten sein. Willst Du nur ein relativ kleines Subset ermitteln, dann musst Du den oben genannten Weg wählen - ob sinnvoll oder nicht ;-)

Lasse mich in meinen Codes stöbern, ob ich die Eigenschaft fix finde ;)

...:cat:...

cherry 17. Jan 2008 12:24

Re: Email Adresse aus dem Active Directory lesen
 
wenn du dir absolut sicher bist, dann muss ich dir das wohl abkaufen. ;-)
Also ich hab auf MSDN gesucht, die einzige Property die den OU Pfad liefern könnte scheint "Departement" zu sein hier die MSDN beschreibung:

Delphi-Quellcode:
The department, an organizational unit (OU), within the company to which the user belongs.
doch die ist wiederum nicht verfügbar für die "WinNT://" suche ...

Vieleicht habe ich was übersehen (hoffentlich), ich wär also froh wenn mit jmd die Property mitteilen könnte...

Danke an Sakura und alle die bei der Suche mithelfen ;-)

sakura 17. Jan 2008 12:26

Re: Email Adresse aus dem Active Directory lesen
 
Zitat:

Zitat von cherry
Danke an Sakura und alle die bei der Suche mithelfen ;-)

Dauert noch ein wenig, da ich gerade festgestellt habe, dass die entsprechenden Sourcen noch in einem Backup rumlungern, dass ich noch nicht zurück gespielt habe, da ich vor ein paar Wochen meinen PC neu aufgesetzt habe. Komme aber noch heute dazu :zwinker:

...:cat:...

cherry 17. Jan 2008 12:28

Re: Email Adresse aus dem Active Directory lesen
 
du bist mein Held! :cheers:

cherry 18. Jan 2008 12:10

Re: Email Adresse aus dem Active Directory lesen
 
und... hat nun jmt eine Idee wie man mit "WINNT://" den ADS Pfad des Objekts rausbekommt, damit ich dann mit "LDAP://" die Email Adresse rausbekomme?

cheers

Alter Mann 18. Jan 2008 12:21

Re: Email Adresse aus dem Active Directory lesen
 
Hi,

ein Abfrage mit LDAP und das Ergebnis steht.
Der Username ist vollkommen ausreichend, wenn Du innerhalb der Domäne bleibst.
Filter = "(&(objectCategory=user)(sAMAccountName='Username' ))".
InParameter = "distinguishedName"
InParemeter = "mail"

Siehe auch hier.

Gruß

cherry 17. Mär 2008 15:15

Re: Email Adresse aus dem Active Directory lesen
 
Ich habs immmer noch nicht hin... wie setze ich jetzt den Filter und wo?
lg

RWarnecke 17. Mär 2008 16:17

Re: Email Adresse aus dem Active Directory lesen
 
Ich weiß nicht hunderprozentig wie es bei Usern in der Domäne ist. Aber wenn Sich ein User in einem Novell-Netzwerk anmeldet, wird lokal auf dem Rechner in der Registry der Distinguished Name abgespeichert.
Schaue mal nach, ob Du Ihn in der Registry findest und wenn ja, mache Deine LDAP-Abfrage und dann hast Du die E-Mail Adresse.

cherry 18. Mär 2008 06:36

Re: Email Adresse aus dem Active Directory lesen
 
ne das ist sicher der falsche Weg. Ich will ja nicht nur die EMail Adresse vom angemeldeten Benutzer!

cherry 18. Mär 2008 06:37

Re: Email Adresse aus dem Active Directory lesen
 
na kommt schon, das kann doch nicht so schwierig sein. Ist es so einfach dass es mir niemand sagen will? :? :stupid:

RWarnecke 18. Mär 2008 08:52

Re: Email Adresse aus dem Active Directory lesen
 
Zitat:

Zitat von cherry
ne das ist sicher der falsche Weg. Ich will ja nicht nur die EMail Adresse vom angemeldeten Benutzer!

Wieso ist das der falsche Weg ? So kommst Du doch an den Distinguished Name. Allerdings Du möchtest das nur von einem PC aus machen, ohne das sich der betroffene User anmeldet. Dann schreibe doch eine rekursive Suche, die Dir jedes Userobjekt ausgibt und zusätzlich die Informationen die Du haben möchtest, wie zum Beispiel die E-Mail Adresse.
Nach meiner Meinung gibt es nur zwei Möglichkeiten.
1. Möglichkeit:
Du liest die Informationen aus, wenn sich der User angemeldet hat. Damit erfährst Du den Distinguished Name und kannst die Abfrage an die AD stellen.
2. Möglichkeit:
Du suchst erst den Usernamen in der AD, bekommst so den Distinguished Name und fragst dann die Informationen ab, die Du brauchst.

cherry 18. Mär 2008 09:10

Re: Email Adresse aus dem Active Directory lesen
 
Sorry AlterMann... Tut mir echt leid... Du hast mir die Lösung schon vor Monaten auf dem Silbertablett präsentiert und ich war zu Dumm um es zu erkennen! :oops:

Natürlich kann dein Programm (AlterMannsProgramm) das ja schon alles... hab das Programm nochmals getestet... is ja alles was ich brauche... vielen Dank...

und nichts für ungut.

Frohe Festtage... 8)

Cheers

wschrabi 15. Apr 2023 15:55

AW: Email Adresse aus dem Active Directory lesen
 
Hallo
ich würde auch eine Lösung von EMAIL SUCHE im Unternehmen brauchen. Kannst Du mir bitte sagen wie das jetzt bei Dir läuft?
In Exchange / Outlook gibt es ja das Adressbuch, ist das auch via LDAP erstellt? Genau so wie in OUTLOOK, würde ich in Delphi einen Namen, Vornamen des Unternehmens suchen, und dann seine EMAIL-Adresse erfragen wollen.
Danke für Deinen Tip.
ws

peterbelow 16. Apr 2023 11:19

AW: Email Adresse aus dem Active Directory lesen
 
Zitat:

Zitat von wschrabi (Beitrag 1521074)
Hallo
ich würde auch eine Lösung von EMAIL SUCHE im Unternehmen brauchen. Kannst Du mir bitte sagen wie das jetzt bei Dir läuft?
In Exchange / Outlook gibt es ja das Adressbuch, ist das auch via LDAP erstellt? Genau so wie in OUTLOOK, würde ich in Delphi einen Namen, Vornamen des Unternehmens suchen, und dann seine EMAIL-Adresse erfragen wollen.
Danke für Deinen Tip.
ws

Verwende lieber das Outlook-Verzeichnis (z. B. via Outlook OLE Automation). Das hat jeder User verfügbar, der Outlook installiert und einen e-Mail Account in der Firma hat. Ob die e-Mail-Adressen auch über LDAP verfügbar sind und gepflegt werden hängt von der LDAP-Konfiguration ab und damit von der Kompetenz der IT-Verantwortlichen. Außerdem ist der LDAP-Zugang für "normale" Benutzer in großen Firmennetzwerken häufig aus Performance- und Datenschutzgründen limitiert.

wschrabi 16. Apr 2023 17:37

AW: Email Adresse aus dem Active Directory lesen
 
Besten Dank Herr Peter, können Sie so eine Outlook ole Automation für Delphi Berlin - auch kommerzieller Natur- empfehlen?
Schönen Abend und besten Dank :-D
Walter

peterbelow 16. Apr 2023 19:29

AW: Email Adresse aus dem Active Directory lesen
 
Das geht mit Delphi-Bordmitteln, man muß nur die Outlook type library importieren (Components -> Import component). Ich hab Sydney nicht mehr auf diesem Rechner, aber deine Installation sollte unter dem Installationsverzeichnis ein Unterverzeichnis OCX\Servers haben, in dem sich schon mitgelieferte Units für diverse Office-Anwendungen finden, in mehreren Versionen. Falls die Palette in deiner IDE einen ActiveX-Tab hat sieh auch da mal rein; die Units enthalten nämlich Wrapper-Komponenten für die wichtigsten OLE-Interfaces die man ganz normal auf ein Form oder Datamodule legen kann.

Leider gibt es für den ganzen Kram nur die Microsoft VBA-Dokumentation, mit ein Bißchen googeln ("delphi outlook ole automation address book" z. B.) findet sich aber sicher ein paar Hinweise.

wschrabi 17. Apr 2023 06:57

AW: Email Adresse aus dem Active Directory lesen
 
Tausend dank für dein wertvolles Feedback, ich werden Google zu Rate ziehen und mich hoffentlich schlau machen!
Schönen Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz