2014-04-02 8 views
2

나는 이것을 행하는 방법을 찾기 위해 애쓰는 중이며 지금까지는 행운이 없습니다. EWS를 사용하여 계정에 연결하고 거기에 포함될 수있는 모든 연락처를 읽고 해당 데이터를 사용자 지정 데이터베이스에 삽입해야했습니다. 아주 쉽게, 나는 그것을 문제없이 곧바로 실행했다.EWS Managed API, 공유 연락처 그룹 받기

이제 이것을 제작에 가져 가야합니다. 여기에 놀랍습니다. 고객이 연락처를 저장할 계정의 자격 증명을 제공하기를 거부합니다. 그들은 우리에게 다른 계정을 사용하게하고 그 계정에 연락처를 공유한다고 말합니다. 이제는 EWS에 연결하여 연결하려는 계정의 연락처를 얻는 데 문제가 없습니다. 그러나 계정에 속하지 않을 때 연락처를 얻을 방법이 없지만이를 공유하는 다른 사람에게 보냅니다. 글쎄, 우리가 할 수있는 몇 가지 impersionation을 구현할 수 있지만 두 가지 옵션 중 하나가 아닌가 걱정됩니다 ...

+0

나는이 구성에 대한 몇 가지 질문이 있습니다. 사용중인 Exchange 버전은 무엇입니까? 연락처를 공유하는 방법, 공유 사서함을 사용하는 방법 또는이 다른 계정과 공유되는 연락처 폴더가 있습니까? 구성에 대해 자세히 설명하면 해상도를 추적해야 할 가능성이 높아집니다. –

+0

생산 환경에서 사용되는 Exchange 버전은 2013입니다. 계정에 정의 된 연락처 폴더 집합이 있습니다. 연락처 폴더는 공유됩니다. 앞서 설명했듯이 개발 단계에서는 문제가 발생하지 않았습니다. 생산 단계가 시작되면 예기치 못한 변화가있었습니다. 예기치 않게 고객이 이전에 예상했던대로 연락처를 사용하여 계정에 로그인하는 것을 거부했습니다. EWS가 가장 (impersonation)을 지원한다는 것을 알고 있습니다. 그러나 이것은 옵션이 아닙니다. – Hobbes

답변

0

다른 사서함에서 연락처를 공유하면 해당 연락처는 WellKnownFolderName.Contacts 내의 연락처 폴더에 저장됩니다. 이 폴더 내의 주소록에 액세스하려면 먼저 FolderId을 받아야합니다. 공유 주소록 폴더의 이름을 알고있는 경우 올바른 폴더를 찾으려면 이와 같은 방법을 사용할 수 있습니다.

Folder rootFolder = Folder.Bind(service, WellKnownFolderName.Contacts); 
foreach (Folder folder in rootFolder.FindFolders(new FolderView(100))) 
{ 
    if (folder.DisplayName==DisplayName) 
    { 
    // Put your code here to get the FolderId and store it if necessary 
    } 
} 

이제 공유 폴더의 ID를 얻었으므로 코드를 사용하여 연락처 정보를 수집 할 수있게되었습니다. Exchange Online을 사용하여 몇 개의 사서함에서이 작업을 수행 할 수있었습니다.

이 정보가 도움이되기를 바랍니다. 그래도 문제가 해결되지 않으면이 게시물을 답변으로 표시하십시오.

덕분에,

--- 밥 ---

+0

아니요. 반환 된 항목 중 어느 것도 다른 사서함의 공유 폴더가 아니며 EWS를 통해 교환하기 위해 기록 된 주소의 연락처 폴더를 가져옵니다 ...하지만 어쨌든 고마워요 – Hobbes

+0

연락처 폴더는 어떻게 공유 되었습니까? Outlook을 사용하면 폴더를 공유 할 수 있으며 공유 초대 전자 메일을 보냅니다. 또 다른 옵션은 사서함에 대한 대리인 액세스를 설정하는 것입니다. 위의 내 접근 방식은 Outlook 공유 방법을 사용했습니다. –

+0

은 Outlook을 통해 공유 초대 이메일로 – Hobbes