【问题标题】:NewMailEx event is not firing for each mail?NewMailEx 事件不会为每封邮件触发?
【发布时间】:2013-05-07 06:04:27
【问题描述】:

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

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

NewMailEx 事件不会因为几封邮件而触发。当两三封邮件同时出现时,它似乎没有触发。 从理论上讲,它应该为 MS Outlook 收件箱中的每封邮件触发。
我正在使用 MS Outlook 2010。

如何确保每封邮件都会触发NewMailEx 事件?

【问题讨论】:

  • 不,不会为 每个 邮箱触发该事件。如果您想串行处理每封电子邮件,我建议您使用 Inbox 集合中的 ItemAdd 事件(请参阅 MSDN)。

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


【解决方案1】:

根据documentation“此事件 (NewMailEx) 传递自上次触发事件以来收件箱中收到的所有项目的条目 ID 列表”。但是,如果您对其进行了测试,但结果并不重要。

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 2013-08-09
      • 2014-07-27
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      相关资源
      最近更新 更多