2009-11-03 70 views
20

有一類或一組內置在.NET框架(3.5+)來分析原始郵件(MIME文件)的功能呢?是否有解析電子郵件(MIME)的.NET Framework方法?

我不想找任何幻想或獨立的庫,它需要被內置。我會在一些單元測試將使用這一點,只需要與體(在這種情況下,將永遠是文本,因此,沒有MIME樹木或邊界)一起搶利益的主要標題(收件人,發件人,主題)。過去我已經寫了幾個MIME解析器,如果沒有任何可用的東西,我只是將正則表達式放在一起。能夠做這樣的事情會很棒:

MailMessage msg = MailMessage.Parse(text); 

想法?

+0

微軟CDO,這裏解釋:http://stackoverflow.com/questions/936422/recommendations-on-parsing-e ml-files-in-c-sharp(我知道這很舊,只是將它發佈給那些後來像我這樣發現的人) – eselk 2013-03-23 03:48:51

回答

21

我知道你說沒有外部庫,但我有一個圖書館張貼在CodePlex上:

https://bitbucket.org/otac0n/mailutilities

MimeMessage msg = new MimeMessage(/* string, stream, or Byte[] */); 

它已與超過40,000現實世界的郵件進行測試。

我不是太高興我的名字空間的選擇,但是......我懶得去改變它。


PS:

在內部,我的圖書館使用這些正則表達式的語法分析器:

internal static string FullMessageMatch = 
    @"\A(?<header>(?:[^\r\n]+\r\n)*)(?<header_term>\r\n)(?<body>.*)\z"; 
internal static string HeadersMatch = 
    @"^(?<header_key>[-A-Za-z0-9]+)(?<seperator>:[ \t]*)(?<header_value>([^\r\n]|\r\n[ \t]+)*)(?<terminator>\r\n)"; 
internal static string HeaderSeperator = 
    "\r\n"; 
internal static string KeyValueSeparator = 
    @"\A:[ \t]*\z"; 
+0

約翰,而不是使用你的庫,也許他可以使用一兩個你的源? – 2009-11-03 20:24:48

+3

是的,絕對。 – 2009-11-03 20:25:11

+0

約翰,我正在使用你的來源,這是非常有益的!但是,如果進行更改,將電子郵件進行檢查會非常有幫助。您是否可以使用套件中的任何電子郵件來推動測試?謝謝 - 埃裏克 – 2011-02-20 02:52:30

3

沒有,有沒有辦法做到這一點呢。正如他們尚未創建POP3或IMAP庫,Microsoft尚未創建文本到消息轉換器。不幸的。

+1

這個問題的唯一真實答案! – elshev 2017-06-29 13:47:18

1

退房Mail.dll .NET mail component,它建立MIME支持,Unicode和多民族的電子郵件支持:

MailBuilder builder = new MailBuilder(); 

// Here you get the message class with attachments, visuals 
IMail message = builder.CreateFromEml(File.ReadAllText("test.eml")); 

// you can access entire MIME document: 
MimeDocument document = message.Document; 

請注意,Mail.dll的是,我已經創建了一個商業產品。

您可以在這裏下載:https://www.limilabs.com/mail

0

檢查我們Rebex Secure Mail,其包括(IMHO)體面S/MIME解析器。 Features包括:

  • High level MailMessage API(如圖常見的電子郵件客戶端消息)
  • Low level MimeMessage API(獲得S/MIME內部樹)
  • 同時支持MIME,S/MIME
  • 支持TNEF( Winmail郵件。DAT)由Microsoft Outlook產生
  • 消息簽名
  • Unicode和國際支持
  • Linked resources list(用於內聯的CSS和在HTML郵件畫面)
  • IEnumerable的<Ť>支持(需要LINQ消息加密
  • 支持直到今天發佈的所有.NET和.NET緊湊框架

解析器是Rebex Secure Mail的一部分,您可以使用download it here

2

我推薦使用Lumisoft的IMAP和MIME解析器庫。我以前使用過它,並且易於使用。 你可以從這裏下載:http://www.lumisoft.ee/lsWWW/Download/Downloads/Net/ 該庫有許多其他協議,如FTP,POP3等,我敢肯定,SC是可用的。嘗試谷歌它,你也可以找到它的codeproject.com 問候

+0

你碰巧有一個簡單的imap例子嗎? – 2013-06-04 20:01:51

+1

請查看http://www.lumisoft.ee/lswww/download/downloads/Examples/ – thiagoleite 2013-06-05 13:19:03