C# 互操作。Outlook继续运行
嘿嘿, 我在Interop.Outlook中遇到问题,无法找到解决方案。因此,我运行我的应用程序,在其中使用Interop.Outlook过滤不同Outlook的帐户,并在需要时获取电子邮件。启动应用程序时,打开Outlook并获取要筛选的帐户。 此外,我还使用Outlook应用程序进行正常工作。 所以,有时过滤器不起作用,我想当我关闭Outlook应用程序时,它也会在我的应用程序Interop.Outlook中关闭,所以我必须重新启动应用程序才能运行过滤器 是否有人有一些想法可以继续运行,或者有一些解决方案可以避免关闭Interop.Outlook 应用olApp; 账户Acc; 项目箱中的项目; 文件夹收件箱C# 互操作。Outlook继续运行,c#,outlook,office-interop,C#,Outlook,Office Interop,嘿嘿, 我在Interop.Outlook中遇到问题,无法找到解决方案。因此,我运行我的应用程序,在其中使用Interop.Outlook过滤不同Outlook的帐户,并在需要时获取电子邮件。启动应用程序时,打开Outlook并获取要筛选的帐户。 此外,我还使用Outlook应用程序进行正常工作。 所以,有时过滤器不起作用,我想当我关闭Outlook应用程序时,它也会在我的应用程序Interop.Outlook中关闭,所以我必须重新启动应用程序才能运行过滤器 是否有人有一些想法可以继续运行,或者
首先,检索帐户的代码不起任何作用-您从不使用Acc变量。请注意,Acc.会话与olApp.Session相同。您可以使用Account.DeliverToStore检索该帐户的存储。然后,您可以使用Store.GetRootFolder检索其顶级文件夹 第二,Outlook在关闭最后一个窗口时关闭,即使存在对其任何对象的未完成COM引用。这样做是为了防止泄露COM对象引用的错误应用
若要使Outlook保持活动状态,请引用其任何资源管理器或检查器对象-您可以从Application.ActiveExplorer或调用MAPIFolder.GetExplorer检索一个对象。浏览器不必可见。如果要处理多个帐户,是否确定Outlook是处理这些帐户的正确网关?例如,在公司Exchange环境中,直接针对Exchange服务器而不是使用客户端应用程序可能更明智。谢谢。我认为展望是一种简单的方式。不过,我会尝试交换方式,因为我找不到其他智能解决方案。嗨,谢谢。不过,我正在测试Exchange,我认为对于我的应用程序来说,运行得确实更好,所以我将把代码改为EWS。然而,它的工作原理是相同的,但是Outlook应用程序的打开没有问题。
public void FilterMain()
{
olApp = new Application();
Accounts accounts = olApp.Session.Accounts;
foreach (Account acc in accounts)
{
if (acc.SmtpAddress.ToLower() == "mail@mail.com")
{
Acc = acc;
break;
}
}
if (Acc != null)
{
Folders rootFolders = Acc.Session.Folders;
foreach (Folder fold in rootFolders)
{
if (fold.Name.ToLower() == "mail@mail.com")
{
foreach (Folder f in fold.Folders)
{
if (f.Name == "Saapuneet") //Saapuneet
{
inbox = f;
itemsInbox = inbox.Items;
itemsInbox.ItemAdd += new Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(ItemsInbox_ItemAdd);
break;
}
}
}
}
}
}