Rufen Sie die SMTP-Adresse des angemeldeten Outlook-Benutzers nach dem Herstellen einer Verbindung über OLE ab
Exchange-Webdienste hat einResolveNames () Funktion, mit der ich (unter anderem) die primäre SMTP-Adresse für den Active Directory-Benutzer abrufen kann, der sich über EWS bei Exchange Server angemeldet hat.
Ich programmiere jetzt durch OLE gegen Outlook und möchte die gleiche Funktionalität.
Ich habe das durchgeblättertOutlook-Objektmodell kann aber kein passendes Objekt oder eine Methode finden.
Kennt jemand ein Objekt / eine Methode, mit der ich die primäre SMTP-Adresse ermitteln kann?
Unten sehen Sie den aktuellen Delphi-Code, mit dem ich eine Verbindung zu Outlook herstelle.
Für die Standardbenutzeranmeldung (AUserSMTP = '') wird das OutlookApp-COM-Objekt (über GetActiveOleObject oder CreateOleObject) zurückgegebenNameSpace (über GetNameSpace) und aMappe (über GetDefaultFolder) Objekt, aber ich konnte nicht finden, wohin ich von dort gehen soll.
Ich dachte, lNameSpace.CurrentUser (aEmpfängerobjekt) könnte irgendwohin führen, aber seine Address-Eigenschaft gibt nur eine Zeichenfolge wie zurück'/ o = TimeTell / ou = Exchange-Verwaltungsgruppe (FYDIBOHF23SPDLT) / cn = Empfänger / cn = Entwickler' ohne email adresse ...
Irgendwelche Vorschläge zur Route?
function TDataModuleSyncOutlook.ConnectToOutlook(AUserSMTP: String = ''): Boolean;
var
lNameSpace, lRecipient: OleVariant;
begin
Result := false;
FWasCreated := False;
try
FOutlookApp := GetActiveOleObject(scxOutlookApp);
Result := True;
except
try
FOutlookApp := CreateOleObject(scxOutlookApp);
FWasCreated := True;
Result := True;
except
on E:Exception do ...
end;
end;
if Result then
begin
lNameSpace := FOutlookApp.GetNameSpace(scxNameSpace);
if AUserSMTP <> '' then // This part not applicable to the question
begin // Open shared calendar als er een expliciete gebruiker is opgegeven...
lRecipient := lNameSpace.CreateRecipient(AUserSMTP);
try
FCalendarFolder := lNameSpace.GetSharedDefaultFolder(lRecipient, olFolderCalendar);
except
on E:Exception do ...
end;
end
else // ... anders de default calendar folder openen
FCalendarFolder := lNameSpace.GetDefaultFolder(olFolderCalendar);
end;
FOleInitialized := Result;
if Result then TSyncLogger.LogAlways('Connected to Outlook') else TSyncLogger.LogAlways('Connection to Outlook failed');
end;