我正在开发一个应用程序,我需要读取传入邮件的内容(邮件正文)。为此,我每次使用新邮件时都会使用以下代码来触发事件 -
outLookApp.NewMailEx += new ApplicationEvents_11_NewMailExEventHandler(MailExtractor.outLookApp_NewMailEx);
但是NewMailEx
事件并没有针对少数邮件触发。当两三封邮件同时出现时,似乎没有发射。
从理论上讲,它应该针对MS Outlook收件箱中的每封邮件触发
我正在使用MS Outlook 2010。
如何确保为即将发送的每封邮件触发NewMailEx
事件?
答案 0 :(得分:1)
根据documentation“此事件(NewMailEx)传递自上次触发事件以来收件箱中收到的所有项目的条目ID列表”。但是,如果你测试它并且它不是那么重要。
使用ItemAdd并不是最佳选择,因为它也可能无法触发每封邮件,因为您可以在documentation中阅读。此外,这也适用于每个文件夹,因此如果用户具有将邮件移动到不同文件夹的服务器规则,则需要处理多个文件夹。
我对类似要求的解决方案是使用Redemption库,其中Store类具有对商店中创建的每个项目触发的OnMessageCreatedEx事件。
答案 1 :(得分:0)
这篇文章现在有点旧了,但我遇到了同样的问题。虽然NewMailEx
似乎比NewMail
和Items.ItemsAdd
更可靠,但当多条消息同时进入时,它仍然不可靠,正如文档所述。
似乎有一个可用的免费加载项(MAPI Store Accessor)可以更好地处理多个发送/接收事件,但在通知之前可能会有很长的延迟(最多30分钟)。
如果您尝试做的事情无法接受,请查看Outlook NewMail event: solution options以获取有关如何推出更可靠解决方案的精彩文章。