0

我已经使用NetOffice创建了一个 Outlook 插件,它完全按照它的意图去做:找到带有损坏的 src 属性 (src="cid:somecontent@id") 的内联图像,并尝试修复它们以指向正确的附件。这是因为从外部来源,这些属性会变得混乱,附件的 cid 也是如此。但是这里没有问题。问题是在将更改保存到 MailItem 后,检查器不会刷新它的视图。这些更改仅在我重新启动 Outlook 后才会反映出来,这绝不是可以接受的。

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

从我从其他 Internet 资源中可以找到的信息来看,Outlook 缓存了该邮件项,并且由于 CID 是使用扩展属性设置的,因此它不知道需要刷新。

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

4

1 回答 1

2

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

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

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

于 2015-07-01T13:12:53.983 回答