0

특정 환경 하에서 Outlook 메일 항목 사용자 정의 속성을 읽을 수 없습니다 ... 나는 내 파스칼 코드에 정의 된 상수를 가지고

const PropNameForUOID = 'http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/ORIONUOID 
내가 호출하여이 속성을 설정

...

OleVariant(MI).PropertyAccessor.SetProperty(PropNameForUOID, Guid); 

I Outlook Express에서 생성 된 Add-in Express에서이 작업을 수행하고 있습니다. MI는 Outlook200.pas MailItem입니다. 이 속성은 모두 잘 설정되어 있습니다. 나는 오류가 없다. 나는 MS Exchange가 14.3.294.4000는, 모든 것이 잘 작동 구축 타격, 아웃룩 2013 클라이언트에서이 프로그램을 실행할 때 다음

은 ...

result := OleVariant(MI).PropertyAccessor.GetProperty(PropNameForUOID); 

내가 나중에 코드에서 읽을 방법이다.

그러나이 정보는 클라이언트 시스템에 저장되며 속성을 읽으려고하면 오류가 발생합니다. 설정은 정상적으로 작동하지만 결함을 읽습니다.

클라이언트 컴퓨터에서 내 IT 기술자는 Outlook 2013에서 액세스 권한이있는 다른 Exchange 서버를 공격하도록 구성했습니다. 그런 다음 효과가있었습니다. 우리는 이것이 클라이언트의 Exchange 서버와 관련이 있다고 생각합니다.

이 경우 괜찮습니까?

그렇다면 어떤 설정을해야합니까?

내가 델파이 코드에서 잘못하고있는 것이 있습니까?

답변

1

속성이 있다고 가정하지 말고 GetProperty에서 반환 한 예외를 처리해야합니다. OutlookSpy (IMessage 버튼 클릭)을 사용하여 문제가있는 항목을보고 해당 속성이 있는지 확인하십시오.

+0

try ... except ... end에 래핑 된 PropertyAccessor.GetProperty 코드가 있습니다. 나는이 예외를 사용자에게 보여줄 수 없다. 그러나 일부 클라이언트 네트워크에서는 정상적으로 작동하며 다른 서버에서는 작동하지 않는 이유는 무엇입니까? 문제가있는 고객에게 MS Exchange 설정을 권장 할 수 있습니까? 내 코드로 돌아가서 내가 취할 수있는 다른 접근법이 있습니까? 요구 사항 : 전자 메일을 인쇄 할 때 항목에 설정 한 속성을 인쇄 된 페이지에 표시 할 수 없습니다. –

+0

이전 버전의 Outlook에서는 GetProperty에서 null을 반환했지만 최신 버전에서는 예외가 발생합니다. 예외를 예상하고 처리해야합니다. 그리고 물론 속성을 먼저 또는 다른 방법으로 설정해야합니다. 아무데도 나타나지 않아야합니다. –

+0

나는'code'UP : = MI.UserProperties.Add ('ORIONUOID', olText, False, olText)를 사용하여 속성을 설정했다. UP.Value : = Guid;'code' 그러면 잘 읽히지 만 사용자가 전자 메일을 인쇄하면 인쇄됩니다. 이런 종류의 재산을 숨기려면 어떻게해야합니까? –

관련 문제