Outlook 加载项不会在应用程序启动时捕获电子邮件 - 应该实施什么挂钩?

Outlook Add-In does not catch emails upon application startup - what hook should be implemented?

我有一个 Outlook 2013 加载项,它在到达时通过 NewEmailEx() 事件处理程序处理电子邮件。

如果 Outlook 正在运行,则效果很好,但如果它未运行,则不会处理这些电子邮件。

我应该在我的 ThisAddIn_Startup() 中包含什么事件处理程序,这样我就可以在启动 Outlook[=11 时运行收件箱中 new/unread 的 "unprocessed" 电子邮件=]?

遗憾的是,当 Outlook 启动时,没有引发事件来指示您的收件箱中有未读邮件。或者在您的加载项启动时更加活跃。

但是您可以获得未读消息的列表并在引发 StartUp 事件时处理它们。

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    MAPIFolder inbox =
        this.Application.ActiveExplorer().Session.GetDefaultFolder
        (Outlook.OlDefaultFolders.olFolderInbox);

    Items unreadItems = inbox.Items.Restrict("[Unread]=true");

    foreach (var unreadItem in unreadItems)
    {
        // Process item

        Marshal.ReleaseComObject(unreadItem);
    }
}

您还可以在收件箱文件夹上使用 Items.ItemAdd 事件 - 当 Outlook 将邮箱与服务器同步并将新邮件下载到文件夹时,它将触发。