在OutlookSpy中更改PidTagBlockStatus时获取MAPI_E_COMPUTED

时间:2015-12-08 14:30:14

标签: outlook-2010 mapi outlook-redemption

我有.MSG文件,我无法更改PR_BLOCK_STATUS(PidTagBlockStatus)。如果我使用OutlookSpy或MFCMapi更改它,我将获得MAPI_E_COMPUTED。

Outlook在保存此消息时也会显示错误(它发生在用户单击显示外部图像后,然后关闭消息,Outlook显示"保存更改?"对话框并且用户同意)。

但是,PidTagBlockStatus不是可计算属性。我无法理解为什么会这样。我有另一个.MSG文件,它几乎是第一个的副本(OutlookSpy和MFCMapi显示两个.MSG文件具有相同的字段/值)但是对于这个文件,我可以设置PR_BLOCK_STATUS。但是,这些文件具有不同的长度,而像SSView这样的低级工具显示较大(和#34;工作")文件具有更多字段。但是,这些神秘的字段不会显示在OutlookSpy或MFCMapi中。

问题与PidTagMessageDeliveryTime的错误设置无关,因为两个消息(工作和非工作)都具有相同的PidTagMessageDeliveryTime(以及其他字段)。 Outlook本身(知道如何从PidTagMessageDeliveryTime正确设置PR_BLOCK_STATUS)无法完成消息保存操作。

"工作"文件直接从Outlook保存,"非工作" - 使用第三方软件。我需要找到一种方法来修复"非工作文件使Outlook可以保存PR_BLOCK_STATUS而不会出现问题。

还有一件事。可以简单地从.MSG中删除PR_BLOCK_STATUS。但是,这会影响用户单击“显示外部图像”后,Outlook会正确设置PR_BLOCK_STATUS,但Outlook中的消息将变为空白,直到下次打开为止。所以这种方法对我来说也不起作用。为此,我将PR_BLOCK_STATUS添加到邮件中并将其设置为零(如果用户决定显示外部图片,则让Outlook计算正确的值)。默认值为零,Outlook通常会显示"显示外部图像"单击,但在关闭消息时无法更新.MSG文件。

另一种方法是计算PR_BLOCK_STATUS"显示外部图像"提前声明(就像它在html email outlook asks to download images主题中描述的那样),但我无法得到这个,因为这必须是用户对每个特定消息的决定,而不是我的决定。

.MSG文件的链接(好/工作和坏/不工作) https://dl.dropboxusercontent.com/u/18102725/msgs.zip

使用Outlook 2010 64位,Windows 7旗舰版,OutlookSpy 3.7 64位。

1 个答案:

答案 0 :(得分:0)

MSG文件允许您设置任何属性,包括PR_LAST_MODIFICATION_TIME或PR_ENTRYID。第三方软件如何创建MSG文件?您是否使用OLE存储查看器查看了MSG文件,例如Structured Storage Viewer(http://www.mitec.cz/ssv.html)?