使用MAPI读取具有RMS保护的电子邮件的电子邮件正文

时间:2018-07-08 10:57:56

标签: outlook-addin mapi

我有一个C ++ Oulook插件,可以读取外发电子邮件(在ItemSend事件期间)并进行分析。发送电子邮件并添加RMS权限时,传出电子邮件的PR_BODY_W属性包含(而不是真实正文):

This message is protected with Microsoft Information Protection. You can 
open it using Microsoft Outlook, which is available for iOS, Android, 
Windows, and Mac OS. Get Outlook for your device here: 
https://aka.ms/protectedmessage.

Microsoft Information Protection allows you to ensure your emails can't be 
copied or forwarded without your permission. Learn more at https://microsoft.com/rms.

通过调用MailItem.Body属性,可以使用Outlook对象模型成功检索到实体。

但是,有没有一种方法可以使用MAPI而非OOM读取正文?

1 个答案:

答案 0 :(得分:2)

PR_BODY中的文本实际上是真实的主体。但是,当Outlook在邮件中找到RMS附件时,它将用在该附件中找到的内容替换为真实正文。 OOM为您屏蔽了此行为。使用MAPI,您必须自己进行解码。

Outlook / Exchange邮件中的

RMS附件受[MS-OXORMMS]: Rights-Managed Email Object Protocol约束。具体来说,您对Opening a Rights-Managed Email Message感兴趣。

这是总体轮廓:

  1. 从消息中抢夺PidNameRightsManagementLicense
  2. 找到邮件类别为"rpmsg.message"的附件
  3. 解压缩RFC 1950之后的附件
  4. 按照协议文档继续从附件中解压缩数据。
  5. ...

知道所有这些都是由OXORMMS控制的,我们可以在GitHub上找到以下项目,这可能是有启发性的:https://github.com/damico/test-inflate-rms