Outlook 电子邮件分类

Outlook Email Categorisation

我正在使用 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 而没有分类。

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

收到多个项目(通常超过十六个)时,不会触发 ItemAdd 事件。那是OOM中已知的问题。

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

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

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

您还可能会发现以下文章有帮助: