Получить 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;

Ответы на вопрос(2)

Ваш ответ на вопрос