2013-05-13 54 views
2

我正在開發一個應用程序,在該應用程序中我需要讀取傳入郵件的內容(郵件正文)。對於這一點,我使用下面的代碼,當有新郵件到達觸發事件,每一次 -NewMailEx事件不會觸發每個郵件?

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

NewMailEx事件不燒成幾個郵件。當兩封或三封郵件同時發送時,它似乎並未解僱。 理論上,它應該爲MS Outlook收件箱中的每封郵件激發。
我正在使用MS Outlook 2010.

如何確保觸發每個即將到來的郵件的NewMailEx事件?

+1

不,該事件未被_every_郵箱觸發。如果您想串行處理每封電子郵件,我建議您在** Inbox **集合中使用** ItemAdd **事件(請參閱MSDN)。 – 2013-05-13 08:55:07

回答

1

根據documentation「此事件(NewMailEx)傳遞自上次事件觸發以來收件箱中收到的所有項目的條目ID列表」。但是,如果你測試了它,那不算什麼。

使用ItemAdd並非最佳選擇,因爲它也可能無法觸發每封郵件,因爲您可以在documentation中閱讀。這也適用於每個文件夾的基礎上,所以如果用戶具有將郵件移動到不同文件夾的服務器規則,則需要處理多個文件夾。

我對類似要求的解決方案是使用Redemption庫,其中Store類具有在商店中創建的每個項目上觸發的OnMessageCreatedEx事件。

0

這篇文章現在有點老了,但我遇到了同樣的問題。雖然NewMailEx似乎比NewMailItems.ItemsAdd更可靠,但如文檔所述,當多個消息同時進入時仍然不可靠。

似乎有一個免費的加載項可用(MAPI Store Accessor)可以更好地處理多個發送/接收事件,但是在通知(最多30分鐘)之前可能會有很長的延遲。

如果你不能接受你想要做的事,請查看Outlook NewMail event: solution options以獲得一篇關於如何推出你自己的更可靠解決方案的好文章。