每个邮件都没有触发NewMailEx事件?

时间:2013-05-13 08:51:40

标签: c# c#-4.0 outlook outlook-2010

我正在开发一个应用程序,我需要读取传入邮件的内容(邮件正文)。为此,我每次使用新邮件时都会使用以下代码来触发事件 -

outLookApp.NewMailEx += new ApplicationEvents_11_NewMailExEventHandler(MailExtractor.outLookApp_NewMailEx);

但是NewMailEx事件并没有针对少数邮件触发。当两三封邮件同时出现时,似乎没有发射。 从理论上讲,它应该针对MS Outlook收件箱中的每封邮件触发 我正在使用MS Outlook 2010。

如何确保为即将发送的每封邮件触发NewMailEx事件?

2 个答案:

答案 0 :(得分:1)

根据documentation“此事件(NewMailEx)传递自上次触发事件以来收件箱中收到的所有项目的条目ID列表”。但是,如果你测试它并且它不是那么重要。

使用ItemAdd并不是最佳选择,因为它也可能无法触发每封邮件,因为您可以在documentation中阅读。此外,这也适用于每个文件夹,因此如果用户具有将邮件移动到不同文件夹的服务器规则,则需要处理多个文件夹。

我对类似要求的解决方案是使用Redemption库,其中Store类具有对商店中创建的每个项目触发的OnMessageCreatedEx事件。

答案 1 :(得分:0)

这篇文章现在有点旧了,但我遇到了同样的问题。虽然NewMailEx似乎比NewMailItems.ItemsAdd更可靠,但当多条消息同时进入时,它仍然不可靠,正如文档所述。

似乎有一个可用的免费加载项(MAPI Store Accessor)可以更好地处理多个发送/接收事件,但在通知之前可能会有很长的延迟(最多30分钟)。

如果您尝试做的事情无法接受,请查看Outlook NewMail event: solution options以获取有关如何推出更可靠解决方案的精彩文章。