2011-11-19 1 views
1

이 업데이트 :보너스 사용시 속성을 PT_BINARY (PT_MV_LONG 아님)로 설정하는 방법은 무엇입니까?

이 문제는 Redemption 5.2 수정되었습니다 :

는 이전에는 DASL 형식에 지정된 "문자열"네임 스페이스에 MAPI 속성 이름 ... 항상 문자열 형식의 것으로 가정 (PT_UNICODE 또는 PT_STRING8).

이제 속성 유형을 명시 적으로 지정할 수 있습니다. PT_LONG (= 3) : http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MyIntegerUserProperty/0x00000003


내가 사용하고 구속 5.1 (및 Outlook 64분의 2,010)이 매우 짜증나는 경우에 실행 한 :

의 객체를 작성하려고 byte[] 속성에 PT_MV_LONG 속성으로 쓰고, PT_BINARY이 아닌 속성으로 씁니다.

RDOItem rdoItem = GetRDOItem(); 
// note this is typed PT_BINARY 
string dasl = "http://schemas.microsoft.com/mapi/string/{312FD430-D997-418A-8E1F-8D224FE69F5D}/MyProp/0x00000102"; 
byte[] data = GetSomeData(); 
rdoItem.Fields[dasl] = data; 

을 ... 또는 RDOUtils.HrSetOneProp를 사용하는 경우 :

RDOProp.Fields를 사용하는 경우 중 하나에 발생

// this also sets MyProp, but does so as PT_MV_LONG, not PT_BINARY 
RDOUtils utils = CreateUtils(); 
var mapiObject = rdoItem.MAPIOBJECT; 
var propTag = utils.GetIDsFromNames(mapiObject, 
    "{312FD430-D997-418A-8E1F-8D224FE69F5D}", 
    "MyProp"); 
utils.HrSetOneProp(mapiObject, propTag, encoded); 

위의 코드는 컴파일되지 않습니다,하지만 종류가 정확합니다.


업데이트 : 문자열 속성이 위에있는 방법으로, 구원은 "MyProp/0x00000102"를 속성을 만드는와

, 그리고 "MyProp".

답변

1

첫 번째 발췌 문장은 저에게 완벽하게 잘 보입니다. OutlookSpy에서 실행 된 다음 스크립트에 아무런 문제가 없습니다 (OutlookSpy 도구 모음의 "스크립트 편집기"단추를 클릭하고 스크립트를 붙여넣고 실행을 클릭하십시오). 새로 추가 된 속성을 보려면 메시지의 선택을 취소하고 다시 선택해야 할 수 있습니다. 두 번째 코드 단편은 특성 유형 (PT_BINARY)을 설정하지 않습니다.

DASL = "http://schemas.microsoft.com/mapi/string/{312FD430-D997-418A-8E1F-8D224FE69F5D}/MyProp/0x00000102"
희미 데이터 (2)
데이터 (0) = 0
데이터 (1) = 1
데이터 (2) = 2
설정된 세션 = CreateObject를 ("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
세트 MSG = Session.GetMessageFromID (Application.ActiveExplorer.Selection (1) .EntryID)
Msg.Fields (dasl) = 데이터
Msg.저장

+0

는 문자열'http://schemas.microsoft.com/mapi/string/ {312FD430-D997-418A-8E1F-8D224FE69F5D}/MyProp/0x00000102'이되지 않는 것입니다 Redemption (5.1.0.0)에서 이해할 수있는 형식으로, 나는 자기 자신의 답답함에 몇 가지 세부 사항을 넣었다. (나는 이미 5.2를 얻어야한다고 생각한다.) Redemption을 만들어 주셔서 감사합니다. btw, 아주 좋은 제품이고 OOM을 다룰 때 덜 호들갑. –

+1

그래, 능력 "string"네임 스페이스의 명명 된 속성에 대한 속성 유형 ("/ 0x00000102")이 버전 5.2에서 추가되었음을 이해해야합니다. http://www.dimastr.com/redemption/history.htm –

0

업데이트 :이 문제는 Redemption 5.2 수정되었습니다

:

는 에게 는

는 이전에는 DASL 형식에 지정된 "문자열"네임 스페이스의 이름을 MAPI 속성이 ... 항상 가정 가되게합니다 문자열 유형 (PT_UNICODE 또는 PT_STRING8).

이제 속성 유형을 명시 적으로 지정할 수 있습니다. PT_LONG (= 3) :

구속을 : http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MyIntegerUserProperty/0x00000003


글쎄, 어쨌든 ... 내 질문을 한 후 응답을위한 바보 같은 생각하지 않습니다, 여기에서 일어나고있는 것 같다 무엇인가 (5.1.0.0) 적어도 RDOItem.Fields의 맥락에서, 형태의 속성을 이해하지 않는 것 :

http://schemas.microsoft.com/mapi/string/{312FD430-D997-418A-8E1F-8D224FE69F5D}/MyProp/0x00000102 
그것은 속성 이름과 속성 네임 스페이스 후 모든 소요

, 또는 MyProp/0x00000102에서 이 경우, 팁 - 오프는 재미있는 이름으로 속성을 만드는 것이 었습니다. 그것은 조금 복잡 임에도 불구하고 나는,

은 다음 (... 포인터가 좋을 것이다) 아직 작업이 (태그되지 않음) 과 구속이 방식으로 유형의 이름을 지정할 수 있는지 확실하지 않습니다 해요 :

그것은 문제처럼 보인다
RDOUtils utils = CreateUtils(); 
var mapiObject = rdoItem.MAPIOBJECT; 
var propTag = utils.GetIDsFromNames(mapiObject, 
    "{312FD430-D997-418A-8E1F-8D224FE69F5D}", 
    "MyProp"); 
propTag = ((propTag >> 16) << 16) | 0x0102; // add proptype 
utils.HrSetOneProp(mapiObject, propTag, byteArray);