2010-07-01 29 views
3

我有一個包含電子郵件消息的文件。我想知道在.net中是否有內置的庫或類,這將允許我直接提取電子郵件的內容 像這樣的東西使用c提取電子郵件內容#

Library lx = new Library(「email_file」);

Console.writeline(lx.From());

Console.writeline(lx.To());

file attachment = lx.attachment();

我已經編寫了一個程序,它可以通過使用正則表達式掃描包含電子郵件消息的文件並從電子郵件中提取單個字段來完成這些任務,如:To,From,Attachment等。但是,要求是使用一些提取這些東西建在圖書館或班級。

任何幫助將不勝感激

回答

0

這取決於郵件如何存儲在您的文件。它從何而來?

如果是Outlook電子郵件,您應該看一看在Outlook interop庫。

+0

郵件來自蓮花筆記客戶端的文件夾我猜 – 2010-07-01 15:48:43

0

我不知道是否有一個內置的類,將做到這一點,但我們使用aspnetemail.com的部件做這個確切的事情。

我們用自己的彈出組件來從服務器獲取的電子郵件,他們的啞劇成分讀它(和附件),以及它們aspnetemail組件來發送電子郵件。

我希望我不聽起來像一個廣告,但我們已經與他們的服務真正的快樂。

5

在.NET中沒有直接支持閱讀電子郵件。你必須自己破解(在一兩天後,你可能能夠處理95%的正常eml電子郵件,經過幾個月的努力,你將能夠處理剩下的5%)。完整的電子郵件解析意味着正確處理國際字符,附件,幾種編碼方案,附件,作爲附件發送的電子郵件,加密和簽名的電子郵件,能夠處理常見的電子郵件客戶端的常見錯誤等...

There是兩種常見的電子郵件文件格式:

EML 基於文本的格式,可以在* nix和windows中找到。 Outlook Express和Thunderbird客戶端可以以eml格式讀/寫郵件。如果您使用.NET的SmtpClient using a PickupDirectory發送電子郵件,則將使用此格式。 EML格式在RFC 2045,2046,2047,2048,2049規定,2822

你可以找到大量的第三方組件的讀取EML文件。以下代碼使用我們的Rebex Secure Mail(但您可以隨意使用Google自己的帳戶)。

using Rebex.Mail; 
using Rebex.Mime.Headers; 

// create an instance of MailMessage 
MailMessage message = new MailMessage(); 

// load the message from a local disk file 
message.Load("c:\\message.eml"); 

Console.Write(message.From); 
Console.Write(message.To) 
foreach (Attachment attachment in message.Attachments) 
{ 
    // Save the file 
    Console.WriteLine ("Saving '{0}' ({1}).", 
    attachment.FileName, attachment.MediaType); 
    attachment.Save (attachment.FileName); 
} 

您可以download trial here

MSG Outlook使用的二進制格式。微軟最近發佈了它的規範。有一個codeproject article與C#庫應該能夠讀取它。還有一些第三方商業組件,但我沒有親自嘗試過。

+0

看起來對我來說是權威的。 – 2010-07-01 15:27:26