2009-07-19 69 views

回答

4

當然可以。他們只是普通的文本文件,沒什麼奇特的。

這是一個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 
+0

嗯......好,很好,我想。 eml是從outlook保存的默認電子郵件標準,但事實證明.msg是(它似乎不是文本格式),那麼.eml文件從哪裏來? – CodeKiwi 2009-07-19 23:37:16

+0

當您設置分揀目錄時,Outlook Express和那些ASP.NET將脫機。 – 2009-07-19 23:39:01

5

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格式。

2

使用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

相關問題