Events Outlook VSTO NewMailEx未启动新存储
我正在开发一个Outlook插件,当我的回调NewMailEx没有为新添加的存储调用时,我遇到了一个问题 我的代码如下所示:Events Outlook VSTO NewMailEx未启动新存储,events,outlook,vsto,outlook-addin,mailitem,Events,Outlook,Vsto,Outlook Addin,Mailitem,我正在开发一个Outlook插件,当我的回调NewMailEx没有为新添加的存储调用时,我遇到了一个问题 我的代码如下所示: private void ThisAddIn_Startup(object sender, System.EventArgs e) { Application.ItemSend += Application_ItemSend; Application.NewMailEx += Application_NewMailEx; } private void A
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemSend += Application_ItemSend;
Application.NewMailEx += Application_NewMailEx;
}
private void Application_NewMailEx(string EntryIDCollection)
{
logger.Debug("Received e-mail with ID: {0}", EntryIDCollection);
var outlook_namespace = Application.GetNamespace("MAPI");
dynamic item = outlook_namespace.GetItemFromID(EntryIDCollection);
if (!(item is Outlook.MailItem))
return;
// do some stuff with mail
}
我还尝试订阅一个新的存储:
{
Application.Session.Stores.StoreAdd += Stores_StoreAdd;
}
private void Stores_StoreAdd(Outlook.Store store)
{
logger.Info("New store is added: " + store.DisplayName);
Outlook.MAPIFolder rootFolder = store.GetRootFolder();
Outlook.MAPIFolder inbox = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
inbox.Items.ItemAdd += items_ItemAdd;
}
private void items_ItemAdd(object item)
{
if (item is Outlook.MailItem)
{
Outlook.MailItem mail = item as Outlook.MailItem;
// do some stuff with mail
}
}
但是,在同步过程中,仅为项调用ItemAdd。对于新邮件,既不调用NewMailEx也不调用ItemAdd
但重启后一切正常,NewMailEx也照常工作
您知道如何修复它或解决方法吗?您的items\u ItemAdd事件处理程序将永远不会启动,因为您将事件处理程序设置在编译器在inbox.items.ItemAdd+=items\u ItemAdd行上创建的隐式变量上。您需要将Items对象保存在一个专用的变量器(或者更好地保存在
列表
)中,以确保它保持活动状态,并且GC永远不会释放它