Получить SMTP-адрес пользователя, вошедшего в Outlook, после подключения через OLE
Веб-сервисы Exchange имеетResolveNames () функция, которую я могу использовать для извлечения (среди прочего) основного SMTP-адреса для пользователя Active Directory, который вошел в систему Exchange Server через EWS.
Я сейчас программирую через OLE против Outlook и хотел бы такую же функциональность.
Я просматривалОбъектная модель Outlook но может'найти подходящий объект или метод.
Кто-нибудь знает объект / метод, который я могу использовать, чтобы получить основной SMTP-адрес?
Ниже приведен текущий код Delphi, который я использую для подключения к Outlook.
Для входа пользователя по умолчанию (AUserSMTP = '') он возвращает COM-объект OutlookApp (через GetActiveOleObject или CreateOleObject),NameSpace (через GetNameSpace) искоросшиватель (через GetDefaultFolder) объекта, но я не смог найти, куда идти оттуда.
Я думал, что lNameSpace.CurrentUser (Объект получателя) может куда-то привести, но его свойство Address возвращает только строку вроде '/ o = TimeTell / ou = Административная группа Exchange (FYDIBOHF23SPDLT) / cn = Получатели / cn = разработчик ' без адреса электронной почты ...
Любые предложения о маршруте принять?
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;