アップデート:
この問題は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
私はRedemption 5.1 (および Outlook 2010/64) を使用しており、非常に面倒なケースに遭遇しました:
byte[]
のオブジェクトをプロパティに書き込もうとすると、としてPT_MV_LONG
ではなくプロパティとして書き込まれPT_BINARY
ます。
これは、次のいずれかを使用した場合に発生しますRDOProp.Fields
。
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
:
// 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);
上記のコードはコンパイルされませんが、型は正しいです。
アップデート:
上記のように文字列プロパティを使用すると、Redemption は「MyProp」ではなく「MyProp/0x00000102」プロパティを作成します。