2

我已经成功地使用以下方法从 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);

如果有人知道如何解决这个问题,我将不胜感激。几个小时以来我一直在努力寻找答案

提前致谢

4

3 回答 3

3

即使这是 4 岁,这就是我解决问题的方法:

while (System.Runtime.InteropServices.Marshal.ReleaseComObject(mailItem) != 0) { }
mailItem = null;
GC.Collect();
GC.WaitForPendingFinalizers();
于 2016-07-08T05:41:44.233 回答
1

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

于 2013-01-10T12:23:24.937 回答
0

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

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

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

于 2013-01-10T12:43:54.747 回答