刷新Outlook mailitem

时间:2015-07-01 11:50:43

标签: c# .net windows outlook netoffice

我使用NetOffice创建了一个Outlook插件,它完全符合它的意图:找到具有损坏的src属性的内嵌图像(src =" cid:somecontent @ id")和尝试修复它们以指向正确的附件。这是因为从外部源,这些属性搞砸了,附件的cid也是如此。但这里没有问题。问题是,在将更改保存到MailItem之后,检查器不会刷新它的视图。只有在重新启动Outlook后才能反映这些更改,这绝不是可以接受的。

我的问题是:如何强制Outlook刷新当前MailItem的视图?

从我从其他Internet资源中可以找到的内容,Outlook缓存mailitem并且因为CID是使用扩展属性设置的,所以它不知道需要刷新。

不确切地知道要发布的代码位,因为代码可以正常工作。这只是一个令人耳目一新的问题。

1 个答案:

答案 0 :(得分:2)

这是一个已知问题。在重新打开项目/检查器并释放对该对象的所有引用(重新打开之前)之前,Outlook不会传播通过对象模型所做的更改。

由于您需要关闭Outlook,因此不会立即释放所有底层COM对象。通常,您需要关闭检查器窗口并释放所有引用(有时可能会更改资源管理器窗口中的选定项目)。

完成使用后,使用System.Runtime.InteropServices.Marshal.ReleaseComObject释放Outlook对象。在Visual Basic中将变量设置为Nothing(在C#中为null)以释放对该对象的引用。有关详细信息,请参阅Systematically Releasing Objects