outlook mailitem未正确关闭

时间:2012-10-02 09:00:03

标签: outlook mailitem

我已成功使用以下命令从c#代码中打开一个新的Outlook邮件项目:

using Outlook = Microsoft.Office.Interop.Outlook;


Outlook.Application oApp;
Outlook.Inspectors oInspects;
Outlook._MailItem  oMailItem;


oApp = new Outlook.Application();
oInspects = oApp.Inspectors;
oMailItem = (Microsoft.Office.Interop.Outlook._MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

oMailItem.Display(true);

我的问题如下: 当我点击mailitem窗口角落的X以关闭它时,我收到一条消息,询问我是否要保存更改,这没关系。但是在选择“否”选项后,电子邮件窗口关闭,但另一个似乎就在它后面(灰色),我必须再次点击角落里的X来关闭它。

如果我点击发送按钮发送电子邮件,也会发生同样的情况。原始窗口关闭,然后出现完全相同(包含所有内容)的另一个窗口,但按钮显示为灰色,我必须单击X才能关闭它

我尝试使用以下代码关闭窗口(以下几行的任意组合)但似乎没有任何效果:

oMailItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard);
oMailItem.Delete();
Marshal.FinalReleaseComObject(oMailItem);
Marshal.ReleaseComObject(oApp);

如果有人知道如何解决这个问题我会非常感激。几个小时我一直在寻找答案

提前致谢

3 个答案:

答案 0 :(得分:3)

即使这是4岁,这就是我如何解决问题:

while (System.Runtime.InteropServices.Marshal.ReleaseComObject(mailItem) != 0) { }
mailItem = null;
GC.Collect();
GC.WaitForPendingFinalizers();

答案 1 :(得分:1)

尝试使用oMailItem.Display(false);代替' true'

答案 2 :(得分:0)

我已经使用Outlook 2007 + VS 2010 Express尝试了您的代码。 您遇到的问题不会发生在我的环境中。 启动代码时,我尝试使用和不运行Outlook。

“using”语句是源代码顶部的using部分,而不是例程中的“using”变量引用。

oMailTime.Display(true)中的'true'必须保持为真,才能获得模态窗口。