Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events Outlook VSTO NewMailEx未启动新存储_Events_Outlook_Vsto_Outlook Addin_Mailitem - Fatal编程技术网

Events Outlook VSTO 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

我正在开发一个Outlook插件,当我的回调NewMailEx没有为新添加的存储调用时,我遇到了一个问题

我的代码如下所示:

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永远不会释放它