在vb.net中保存时Outlook OutlookItem缓存问题

时间:2015-02-02 20:36:01

标签: vb.net outlook interop exchange-server mailitem

我有一个小型的WinForms程序,允许我的用户为我们的客户创建电子邮件爆炸。该应用程序有两个选项:一个是用于设计电子邮件的HTML编辑器(效果很好),另一个是导入.msg或.oft模板。 电子邮件完成后,它将移至共享的Outlook邮件文件夹,以便进行夜间宏发送作业。

非常简单的东西!

问题:一旦模板在应用程序中打开,Outlook似乎缓存该版本。如果用户决定退出模板,则Outlook无法获取更新。

注意:如果用户点击"预览"按钮他们在收件箱中收到了正确的UPDATED版本。但是当他们提交MailItem时,它会选择旧版本。

 Dim newItem  as Outlook.MailItem = gobjOutlook.CreateItemFromTemplate(fileEmailTemplate.FileName)

send命令工作正常newItem.Send()

但是当我将它移到共享文件夹时,它会从某个地方获得原始版本。

Dim addFldr As Outlook.MAPIFolder
addFldr = StoreFLDR.Folders.Add(gobjNamespace.CurrentUser.Name & ": " & DateTime.Now.ToString())
newItem.Save()                 
newItem.Move(addFldr )

我尝试将GC和SaveAs强制到另一个位置并重新加载模板,没有运气。

1 个答案:

答案 0 :(得分:0)

我建议立即从发布底层COM对象开始。完成使用后,使用System.Runtime.InteropServices.Marshal.ReleaseComObject释放Outlook对象。然后在Visual Basic中将变量设置为Nothing(C#中为null)以释放对该对象的引用。

您可能会发现How To: Create a new Outlook message based on a template文章很有帮助。无论如何,很高兴看到你的完整源代码与Outlook相关。