2012-06-27 58 views
3

是否可以直接返回MailItem作爲Outlook MailItem作爲流

(從Microsoft.Office.Interop.OutlookMailItem)現在我已經找到了一個臨時的解決方案首先MailItem保存到一個目錄,打開它,並流回到該文件,並再次之後刪除該文件。

這個臨時解決方案在處理大量電子郵件時很慢,我想用它替換它。直接返回MailItem作爲MemoryStream

這怎麼辦?

編輯,由於評價:正在緩慢是其中的一部分,但另一個codepart(不能修改)只接受一個流,這是辦法,我尋找一個解決方案打開的MailItem作爲流)

+2

我在一分鐘左右的時間內使用mailitem直接處理高達600個信息 - 這絕不構成答案的一部分,所以我好奇你爲什麼需要一個流? – BugFinder

+1

您可以嘗試使用[EWS而不是VSTO](http://msdn.microsoft.com/zh-cn/library/dd637749%28v=exchg.80%29.aspx)。除非您使用**剪貼板**或**拖放**,否則無法將「MailItem」作爲「MemoryStream」訪問。 – SliverNinja

+0

類似的問題我發現:http://stackoverflow.com/questions/9595440/getting-system-net-mail-mailmessage-as-a-memorystream-in-net-4-5-beta – juFo

回答

0

我有一個想法,你的緩慢的問題。我寫了一些可能會在寫作時產生巨大影響的東西。

當我在非緩存模式下進行展望時,檢索並打開每封電子郵件,然後將其移至已處理的文件夾是很困難的,至少可以說。當我使用緩存模式時,當然我必須編寫代碼以確保它能夠同步所有內容,因此在開始之前我已經對信息進行了修改。

當其緩存時,您可以同時打開許多郵件項目,並行處理,在非緩存模式下,它會阻止您在32個左右!它的開放思想(和我們的)是不同的。

所以,我也嘗試了一個imap類,sheesh讓我們再也不會說那個錯誤了。

如果你有一些代碼,也許我們可以幫忙嗎?如果你沒有緩存模式,我可以挖掘我如何強制它同步所有的代碼,它不像我想的那樣簡單(我可能錯過了某些),但它工作非常可靠,現在處理所有的備份電子郵件我得到..

+0

好得很慢一件事,但我需要作爲一個Stream的MailItem(一個Stream是唯一被接受的東西)。所以這就是我想知道如何直接獲得一個MailItem作爲Stream。 – juFo

+0

什麼需要流?我沒有嘗試過,在Delphi下,你可以創建一個內存流,然後將正文文本寫到該流中,以便用另一個流讀取它。或者,我猜你可以將所有郵件以unix樣式寫入文本文件並閱讀作爲一個流......需要一個流作爲輸入?也許我們可以強迫它做別的事情? – BugFinder