文件,我想知道是否有可能以點網(最好從一個MemoryStream)解析的.eml和.msg文件,這樣我可以在ASP中使用它們。網頁。是否可以讀取的.eml在.NET
回答
當然可以。他們只是普通的文本文件,沒什麼奇特的。
這是一個EML文件看起來像什麼在裏面
X-Sender: [email protected]
X-Receiver: [email protected]
MIME-Version: 1.0
From: [email protected]
To: [email protected]
Date: 7 Jun 2009 18:58:01 -0400
Subject: From someone you know
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
This is the body
EML(MIME消息)
EML在大多數情況下MIME編碼與郵件文件。 EML文件的常見來源包括從Outlook Express或Thunderbird保存的消息,從IMAP或POP3服務器下載的消息。
正確加載EML文件並不像看起來那麼容易。您可以在幾天內編寫一個在95%情況下工作的實現。剩下5%至少需要幾個月;-)。我知道,因爲我參與了發展。
考慮以下困難:
- unicode的電子郵件
- 從右到左的語言
- 糾正流行的郵件客戶端造成衆所周知的錯誤畸形EML文件和服務器
- 處理S/MIME(加密和簽名的電子郵件)
- 用編碼附件的幾種方法正確處理
- 處理內嵌圖片和樣式表嵌入到HTML電子郵件
- 確保它解析正確地從邁克·克里斯平(MIME和IMAP的RFC的合着者)一個MIME torture message
- 確保不良消息不會導致緩衝區OVERUN或其他應用程序崩潰
- 處理分層消息(消息附帶消息)
- 確保其正確處理非常大的郵件
成熟等解析器需要數年時間和連續的反饋爲它的用戶。現在,.NET框架中沒有包含這樣的解析器。直到它改變,我會建議從一個建立的供應商獲得第三方MIME解析器。
下面的代碼使用我們的Rebex Secure Mail component,但我敢肯定,類似的任務可以很容易地與其他供應商的組件被複製爲好。
的代碼是基於Mail Message tutorial。
// create an instance of MailMessage
MailMessage message = new MailMessage();
// load the message from a local disk file
message.Load("c:\\message.eml");
// load the message from MemoryStream
MemoryStream stream = new MemoryStream();
// TODO: fill the stream, seek to the beginning
message.Load(stream);
MSG(Outlook郵件)
MSG格式是由微軟在Microsoft Outlook引入一個電子郵件消息格式。有MSG format specification on Microsoft site。您可能還想嘗試第三方組件。我知道一個MSG format component from IndependentSoft,但沒有親自嘗試過。我們的Rebex Secure Mail版本1.0.4060.0或更高版本也支持MSG格式。
使用CDOSYS.DLL爲EML文件
您可以將這個「正常」呢(當然不是試圖去解析它作爲一個文本文件更好)使用COM CDOSYS.DLL(「微軟CDO的Windows 2000年圖書館「)。
您需要通過添加引用來爲它創建一個.Net包裝:因爲它取決於ADODB.dll,因此您會在您的bin中爲您創建Interop.CDO.dll和Interop.ADODB.dll目錄。
有很多的信息,各地使用CDO,但幾乎沒有關於使用它來讀取EML文件發送電子郵件,但我發現這個頁面,讓我開始http://support.microsoft.com/kb/310224
- 1. 如何使用.net讀取eml文件?
- 2. 是否可以讀取訪客的Cookie?
- 3. 是否可以讀取鎖定文件?
- 4. 是否可以使用PHPWord讀取MSWORD?
- 5. 是否可以從stdout讀取?
- 6. 是否可以讀取IE Session cookies?
- 7. 是否可以讀取跨域cookie?
- 8. 是否可以從VBO讀取?
- 9. 是否可以讀取.exe文件?
- 10. 是否有可能在.NET WMQ API中讀取JMSDeliveryMode屬性?
- 11. 是否有可能在.NET 3.5中讀取頁面MetaKeywords?
- 12. 是否可以將PHP PEAR SMTP Object保存爲EML文件?
- 13. 是否可以讀取.Net應用程序中的Paradox 7.x .db文件?
- 14. 是否可以確定是否從SecureStream讀取將被阻止?
- 15. 是否可以在PHP中讀取大的xlsx文件?
- 16. 是否可以讀取存儲在計算機上的文件?
- 17. 是否可以在JavaScript中讀取圖像的像素?
- 18. 是否可以在程序代碼中讀取IceBreak'marker'的內容?
- 19. 是否可以在SML中的數字列表中讀取?
- 20. 是否可以在html中閱讀pdf?
- 21. 是否可以在Silverlight中讀取excel文件?
- 22. 在Java中可以讀取雙打是否線程安全?
- 23. 是否可以在集合級別設置讀取首選項?
- 24. 是否可以在編譯時加載/讀取shape_predictor_68_face_landmarks.dat?
- 25. 在異常之前是否可以讀取答案?
- 26. 在重定向之前是否可以讀取STDOUT?
- 27. 是否可以在Perl中使用Config :: General來讀取__DATA__?
- 28. 是否可以在SQL Server中讀取電子郵件回覆?
- 29. 是否可以在Node.js中只讀取一個變量
- 30. 是否有可能在.NET
嗯......好,很好,我想。 eml是從outlook保存的默認電子郵件標準,但事實證明.msg是(它似乎不是文本格式),那麼.eml文件從哪裏來? – CodeKiwi 2009-07-19 23:37:16
當您設置分揀目錄時,Outlook Express和那些ASP.NET將脫機。 – 2009-07-19 23:39:01