2014-10-18 3 views
0

UserProperty을 Outlook MailItem에 추가하면 연결된 다른 Outlook에 동기화되지 않는 문제가 있습니다.VSTO Outlook 사용자 속성 (사용자 지정)이 동기화되지 않았습니다.

Outlook에서 강제로 전체 전자 메일을 동기화하려면 어떻게해야합니까?

내 overal 문제 : 내가 공유 Exchange 사서함있어 (Outlook에서) 두 클라이언트에서 열 나는 그것이 하나의 Outlook에서 열 들어간 경우, 메일 항목을 잠그고 두 번째 Outlook을 보여 드리고자합니다 사용자는 "사용자 XX가 현재이 이메일을 읽고 있습니다."

내 문제 해결 방법 : Outlook 플러그인 만들기. 사용자 "A"가 전자 메일을 열 때 MailItem 개체에 "LockingUser"UserProperty을 추가하려고합니다. 사용자 "B"가 전자 메일을 열려고하면 "LockingUser"속성이 있는지 먼저 확인합니다. 캐시 된 모드를 비활성화했습니다. 나는 전자 메일의 제목 업데이트하는 것을 시도했다 :이 완벽하게 작동하고 immediatly 동기화됩니다 (하지만 내 문제에 대한 해결책이 아니다)는 MailItem을

private void SetLockingUser(Outlook.MailItem mail) 
{ 
    var lockingUserProperty = mail.UserProperties.Find("LockingUser"); 
    if (lockingUserProperty != null) 
    { 
     MessageBox.Show("Email locked by: " + lockingUserProperty.Value); 
     return; 
    } 

    var identity = System.Security.Principal.WindowsIdentity.GetCurrent(); 
    var username = identity != null ? identity.Name : ""; 

    lockingUserProperty = mail.UserProperties.Add("LockingUser", Outlook.OlUserPropertyType.olText, false, 1); 
    lockingUserProperty.Value = username; 
    mail.Save(); 
} 

답변

1

코드의 관련 조각을 보여 주시고 반드시 전화 확인을 .구하다. 또한 캐시 모드가 사용되는 경우 변경 사항이 Exchange에 동기화되기까지 몇 분이 걸릴 것이고 다른 사용자에게 변경 사항이 적용되기 때문에 항상 지연이 발생합니다. 사용자 속성 대신 외부 동기화 메커니즘을 사용하는 것이 좋습니다.

+0

고마워요! 내 질문을 업데이 트했습니다 : 캐시되지 모드에서 일하고 있습니다. 메일 제목을 변경하면 즉시 동기화됩니다 (1 ~ 2 초). 다른 정보를 동기화 할 수있는 방법이 필요합니다. – Gerwald

+0

다른 사용자가 동일한 메시지를 코드에서 열거 나 참조하면 Outlook에서 메시지가 완전히 참조 해제되고 다시 열릴 때까지 Outlook에서 변경 내용을 볼 수 없습니다. OutlookSpy에서 다른 사서함의 변경 사항을 볼 수 있습니까 (IMessage 단추 클릭)? –

관련 문제