在vb.net中保存时Outlook邮件项缓存问题

在vb.net中保存时Outlook邮件项缓存问题,vb.net,outlook,interop,exchange-server,mailitem,Vb.net,Outlook,Interop,Exchange Server,Mailitem,我有一个小的WinForms程序,允许我的用户为我们的客户创建电子邮件爆炸。该应用程序有两个选项:一个是HTML编辑器,用于设计电子邮件的工作方式,第二个是导入.msg或.oft模板。 完成电子邮件后,它将被移动到共享outlook邮件文件夹中,用于夜间宏发送作业 很简单的东西 问题:一旦模板在应用程序中打开,outlook似乎会缓存该版本。如果用户决定退出,请在模板中进行更改,Outlook将不接收更新 注意:如果用户单击预览按钮,他们会在收件箱中收到正确的更新版本。但当他们提交邮件时,它会选

我有一个小的WinForms程序,允许我的用户为我们的客户创建电子邮件爆炸。该应用程序有两个选项:一个是HTML编辑器,用于设计电子邮件的工作方式,第二个是导入.msg或.oft模板。 完成电子邮件后,它将被移动到共享outlook邮件文件夹中,用于夜间宏发送作业

很简单的东西

问题:一旦模板在应用程序中打开,outlook似乎会缓存该版本。如果用户决定退出,请在模板中进行更改,Outlook将不接收更新

注意:如果用户单击预览按钮,他们会在收件箱中收到正确的更新版本。但当他们提交邮件时,它会选择旧版本

 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强制到另一个位置并重新加载模板,但没有成功

我建议从立即释放底层COM对象开始。用于在使用完Outlook对象后释放该对象。然后在C中的Visual Basic null中将变量设置为Nothing,以释放对对象的引用


你可能会发现这篇文章很有帮助。无论如何,如果能看到与Outlook相关的完整源代码,那就太好了。

您好,谢谢您的链接!好文章!我会在处理完所有对象后立即释放它们。昨天我测试了一些东西,发现。。。当我的应用程序完全关闭时,我创建了一个新的.otf文件,并向其中添加了一些文本,如Hello,World!保存它并退出。然后我重新打开该文件并将文本更改为Hello,Hello!。当我打开应用程序并使用.otf文件时,MailItem.Send命令会发送更新的版本,但当我移动文件时,它会移动原始的Hello,World!文本我不知道它是从哪里来的!有什么帮助吗?我使用Outlook 2010编辑邮件。如果你想得到任何建议或解决方案,你需要发布所有代码。我刚刚发现,如果我用文本编辑器编辑.msg/.otf文件,它包含原始消息。net代码会拾取旧的原始消息,而不是新编辑的消息。