2010-04-21 89 views
4

我想寫一個進程,將採取在爲參數的對象MAILMESSAGE和分裂它拆開來存儲主題,正文的地址,從地址,和附件(困難的部分)放在數據庫中,這樣電子郵件可以在未來某個時候發送。有沒有辦法序列化的.Net對象MAILMESSAGE

我首先想到的是將需要的部分拆分並存儲到數據庫中,除了附件以外,它的功能很強大。我無法弄清楚如何循環收集,然後實際上對它們做任何事情。

它有一個簡單的方法來序列化一個MailMessage對象,實際上將附帶的內容與它?

我這樣做全錯嗎?有沒有人做過這個?

+0

請參閱[我的答案] [1],用C#代碼。 [1]:http://stackoverflow.com/questions/1264672/how-to-save-mailmessage-object-to-disk-as-eml-or-msg-file/23923458#23923458 – saille 2014-07-13 01:39:41

回答

0

如果我不得不猜測策略,我會使用將每個附件轉成字節數組,然後將這些字節數組和消息詳細信息放入一個xml文檔,然後將該xml文檔作爲參數。

+0

感謝您的建議。不是一個壞主意,但我更期待一種可以從實際的附件收集得到的文件,這樣我們就不必改變我們現有的代碼庫。那麼,只有改變,我現在可以取代「smtp.Send(味精);」與「MyClass.Send(味精);」而MyClass.Send方法實際上將這些信息存儲在數據庫中,而不是實際發送它。然後服務器進程每10分鐘醒來一次,實際發送電子郵件。 – 2010-04-22 13:51:47

1

真的沒有一個好方法來做到這一點。所以,我繼續使用我的原始方法循環訪問MailMessage對象並獲取我關心的所有信息。對於附件,這是最難的部分,每個附件有ContentStream,我只是讀該流並寫出到磁盤,存儲文件名,然後我可以重新創建它,當我想實際發送。

我還沒有完全測試這種方法,所以我不把它推薦給別人還,但它似乎是在我們的特定情況下的最佳解決方案。

相關問題