我已成功使用以下命令从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);
如果有人知道如何解决这个问题我会非常感激。几个小时我一直在寻找答案
提前致谢
答案 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'必须保持为真,才能获得模态窗口。