当邮件到达时,我使用Outlook来阅读和分类电子邮件。
这是我使用的事件:
Outlook.Items items;
items = inbox.
items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);在内部开关语句后面,我有这样的代码:
case "Subject":
mail.Categories = "Category";
mail.UnRead = false; break;
default:
mail.Categories = "Attention needed";
mail.UnRead = false;
mail.Save();
break;问题是,有时收件箱每秒接收5封电子邮件,只对第一封和最后一封电子邮件进行分类,而另一封则是在没有类别的情况下得到UnRead = false。
还有其他我可以尝试的事情吗?
发布于 2018-05-26 22:08:51
当收到多个项时,不会触发ItemAdd事件(典型情况是,超过16项)。这是OOM中已知的。
相反,您需要订阅Application类的Application事件,该事件在收件箱中收到新项时触发。
此事件对Microsoft处理的每个接收到的项触发一次。该项可以是几种不同的项类型之一,例如,MailItem、MeetingItem或SharingItem。EntryIDsCollection字符串包含对应于该项的条目ID。请注意,此行为与事件的早期版本不同,因为“Entry `EntryIDCollection”包含自上次事件触发以来在收件箱中接收的所有项的逗号分隔的条目in列表。
当新消息到达收件箱并在客户端规则处理发生之前,将触发NewMailEx事件。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项。使用此方法时要小心,以尽量减少对Outlook性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,可以异步地发生垃圾邮件筛选和将新邮件从收件箱移动到另一个文件夹的客户端规则等进程。您不应该假设在这些事件触发后,收件箱中的项目数量总是会增加一项。
此外,您可能会发现以下文章很有帮助:
https://stackoverflow.com/questions/50488836
复制相似问题