【问题标题】:Outlook Email CategorisationOutlook 电子邮件分类
【发布时间】:2018-11-02 11:17:51
【问题描述】:

我正在使用 Outlook Interop 在电子邮件到达时对其进行阅读和分类。

这是我使用的事件:

 Outlook.Items items;
 items = inbox.
 items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);

稍后在 Switch 语句中我有这样的代码:

case "Subject":
    mail.Categories = "Category";
    mail.UnRead = false; break;
default:
    mail.Categories = "Attention needed";
    mail.UnRead = false;
    mail.Save();
    break;

问题在于,有时收件箱每秒接收 5 封电子邮件,并且只对第一封和最后一封电子邮件进行分类,而另一个收件箱只会收到 UnRead = false 而没有类别。

我还有其他可以尝试的活动吗?

【问题讨论】:

    标签: c# outlook vsto office-interop outlook-addin


    【解决方案1】:

    当收到多个项目(通常超过 16 个)时,不会触发 ItemAdd 事件。这是OOM中已知的发布。

    相反,您需要订阅Application 类的NewMailEx 事件,该事件在收件箱中收到新项目时触发。

    对于 Microsoft Outlook 处理的每个收到的项目,此事件都会触发一次。该项目可以是几种不同的项目类型之一,例如 MailItemMeetingItemSharingItemEntryIDsCollection 字符串包含对应于该项目的条目 ID。请注意,当 `EntryIDCollection 包含自上次触发事件以来在收件箱中收到的所有项目的以逗号分隔的条目 ID 列表时,此行为与早期版本的事件有所不同。

    NewMailEx 事件在新邮件到达收件箱时以及在客户端规则处理发生之前触发。您可以使用EntryIDCollection 数组中返回的Entry ID 来调用NameSpace.GetItemFromID 方法并处理该项目。请谨慎使用此方法,以尽量减少对 Outlook 性能的影响。但是,根据客户端计算机上的设置,新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生。您不应假设在这些事件触发后,收件箱中的项目数量总是会增加一项。

    此外,您可能会发现以下文章对您有所帮助:

    【讨论】:

      猜你喜欢
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2015-05-29
      相关资源
      最近更新 更多