2008-01-09

Outlook MAPIOBJECT

Outlook的对象模型中,很多对象都有一个MAPIOBJECT属性。这个属性可以用来获得对应的MAPI对象。最简单的应用可能就是取得MailItem上的一些额外属性,比如取得Attachment的ContentId。
要正确使用这个属性不容易。首先,不要在进程外取得属性的值,也就是说不能用Office Automation来启动Outlook,必须是在AddIn中取值。用伪代码,示例如下:

  • Marshal.GetIUnknownForObject(attachment.MAPIOBJECT)
  • Marshal.QueryInterface(pUnk, ref IID_IMAPIProp, out pMAPIPropObj); // Guid IID_IMAPIProp = new Guid("{00020303-0000-0000-C000-000000000046}");
  • pMAPIProp->GetProps((LPSPropTagArray)props, MAPI_UNICODE, &count, &propValue); // ULONG props[] = {1, 0x3712001E}; // property tag for content id


主要的障碍是IMessage没有.NET版本的,所以我使用了C++/CLI来做Interop。替代方案有Redemption,和MAPI33,但是都是要收费的。
评论
发表评论

您还没有登录,请登录后发表评论

taowen
搜索本博客
我的相册
C6038ae3-566b-4f0f-a7a4-4e96c192012b-thumb
step2
共 6 张
存档
最新评论