2010-12-01 2 views
7

사용자의 문제를 더 이상 무시할 수 있습니다. 그들은 작업 스케쥴링 시스템을 원하며 어떤 시점에서는이를 제공해야합니다. 나 자신을 만드는 것을 생각하고 있었지만 (어려운 일은 아닐 수도있다.) 사용자들은 이미 동일한 작업을 위해 Outlook을 사용하고 있기 때문에 두 가지 side-by-side 작업 관리 시스템을 사용하게된다. 아웃룩 일정/작업 통합의 측면에서ASP.NET 인트라넷 응용 프로그램과 Outlook 일정을 통합하는 기술

는 두 가지 접근 방법이 나에게 발생

1)를 사용하여 자바 스크립트 및 자동화

가 나는 자바 스크립트로 자동화 할 가능성이 기억하는 것 같다.

총 : 전에 자동화를 수행 한

  • .

단점 :

  • 자동화 끔찍한입니다!
  • 일부 지속성 (아웃룩 엔티티) 클라이언트 측 코드의 책임, 나머지 서버 측 코드의 책임입니다. 이것은 끔찍한 느낌.
  • 보안 문제와 관련하여/
    IT 부서로부터의 차단.

2) 그래서 희망이 보안 문제를 쉽게한다, 직접

인트라넷가에 단일 기호를 사용하여 Exchange 서버와 통신 할 수있는 .NET API를 사용합니다.

총 :

  • 모든 지속성 코드가 서버 측 것이다.

단점 :

  • 난 같은 API 의 존재를 알지 못한다.

나는 거인의 어깨에 서기를 좋아합니다. 이 길을 밟은 사람이 나에게 약간의 지침을 줄 수 있습니까?

+0

뜻의 JScript (Windows 스크립트 호스트)와 OLE : 그들은 당신의 적절한 권한 (읽기/쓰기/편집 읽기) 당신과 같이 일정에 약속을 추가 할 수 있습니다를 제공하면? 그렇다면 아마 브라우저에서 작동하지 않으며 OLE를 사용할 수 있도록 컴퓨터에 Outlook을 설치해야합니다. –

+0

저는 몇 년 전에 JavaScript를 사용하여 Word의 기본 자동화를 수행 할 수있었습니다. 예, Outlook은 컴퓨터에 설치해야하지만 사용자의 컴퓨터이므로 설치해야합니다. – David

답변

7

우리는 최근에 Exchange Web Services Managed API을 사용하여 인트라넷 응용 프로그램에 대해 동일한 종류의 통합을 수행했습니다. 그것은 두 번째 옵션에 대해 갈 방법 중 하나입니다. 자바 스크립트를 사용해 본 적이 한번도 없었으므로 그렇게 생각하지 않았습니다.

덧글에 대한 쿼리와 관련하여 1 : 다른 사용자 계정을 가장하고 작업하는 데 사용할 단일 AD 사용자가 필요합니다.아래의 예를 참조하십시오 :

내가 가장을 작동하기 위해 기사 Configuring Exchange Impersonation을 확인 함 암호 [email protected]

void CreateFolder(string targetUserEmail) { 
    string appName = "myappname"; 
    string appPassword = "[email protected]"; 
    string emailDomain = "fabrikam"; 
    string appEmail = string.Format("{0}@{1}.com", appName, emailDomain); 

    ExchangeService service = new ExchangeService(); 
    service.Credentials = new NetworkCredential(appName, appPassword, emailDomain); 
    service.AutodiscoverUrl(appEmail); 

    service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, targetUserEmail); 

    Folder newFolder = new Folder(service); 
    newFolder.DisplayName = "TestFolder1"; 

    newFolder.Save(WellKnownFolderName.Inbox); 
} 

fabrikam\myappname라는 이름의 액티브 디렉터리 계정을 가지고 말할 수 있습니다.

희망이 있습니다.

+0

이것은 완벽 해 보입니다. 더 이상 신경 쓸 필요가 없다면 API를 사용하여 캘린더에 항목을 추가하기 전에 Joe Bloggs에 대해 알아야 할 것은 무엇입니까? Active Directory 암호가 필요합니까 (이것은 분명히 매우 문제가 될 것입니다). 또한 API를 통해 개발자는 누구든지 캘린더 정보를 볼 수 있습니까? 아니면 (또는 IT 담당자) 액세스 수준을 구성 할 수 있습니까? 회사의 상사를 설득하는 것이 얼마나 힘든지 고민 중입니다. 캘린더와 이메일을 읽을 수 있다면이 툴이 필요합니다. – David

+0

@David : 내 의견을 바탕으로 내 대답을 업데이트했습니다. –

+0

감사합니다. CC 덕분에 대단히 도움이되었습니다. – David

0

(전 세계에 있기 때문에) 어떤 이유로 사용자가 가장을 사용하지 않으려는 경우 각 사용자가 앱을 실행중인 프로필 (CodeCanvas의 샘플에서 appName)과 캘린더를 공유하도록 할 수 있습니다. 나는 자바 스크립트 자동화로 추측하고있어

myappointment = new Appointment(service); 
myappointment.Subject = "subject"; 
myappointment.Body = "body"; 
myappointment.Start = myStartTime; 
myappointment.End = myStartTime.AddHours(1); 
myMailbox = new Mailbox("[email protected]"); 
myFolder = new FolderId(WellKnownFolderName.Calendar, myMailbox); 
myappointment.Save(myFolder, SendInvitationsMode.SendToNone); 
/* get the appointment id so your app can access it later to update or delete */ 
myexchangeid = myappointment.Id.UniqueId; 
관련 문제