2008-10-25 142 views
53

我需要一個基於服務器的組件定期訪問POP3電子郵件框和檢索電子郵件,Web應用程序。然後該服務需要處理,這將涉及到電子郵件:將POP3客戶端功能集成到C#應用程序中?

  • 驗證電子郵件對一些業務規則(它包含在主題行中的有效參考,其中用戶發送郵件等)
  • 分析並保存任何附件盤
  • 以電子郵件正文和附件的詳細信息,並在數據庫中創建一個新的項目
  • 或更新了基準傳入電子郵件主題行相匹配的現有項目

解決這個問題的最好方法是什麼?我真的不想從頭開始編寫POP3客戶端,但我需要能夠自定義電子郵件的處理。理想情況下,我將能夠插入一些組件,爲我進行訪問和檢索,返回附件,正文,主題行等準備好供我處理的數組...

[更新:評價]

OK,所以我花了很多時間相當尋找到(主要是免費).NET POP3庫,所以我想我會提供一些下面提到的那些簡短評論和其他幾個人:

  • Pop3.net - 免費 - 工程確定,在所提供的功能方面非常基本的。這是非常簡單,只是在POP3命令和一些base64編碼,但它是非常簡單的 - 可能是一個很好的介紹
  • Pop3 Wizard - 商業/一些開源代碼 - 無法獲得此建立,缺少的DLL,我不會費心這個
  • C#Mail - 免費供個人使用 - 效果不錯,配備了啞劇解析器和SMTP客戶端,但是意見是日語(沒什麼大不了),並沒有使用SSL「開箱即用」 - 我不得不改變SslStream構造後,它的工作沒有問題
  • OpenPOP - 免費 - 一直沒有更新約5年,所以它的當前狀態是.NET 1.0,不支持SSL但這是沒問題解決 - 我只是取代了存在g流與SslStream和它的工作。附帶Mime解析器。

免費的圖書館,我會去C#的郵件或OpenPOP。

我看了幾個商業圖書館:Chillkat, Rebex,RemObjects,JMail.net。基於功能,價格和對公司的印象,我可能會去Rebex的,可能在未來,如果我的需求發生變化或者我遇到任何與C#郵件或OpenPOP的生產問題。

如果任何人的需求吧,這是更換SslStream構造函數,我用來啓用SSL用C#郵件和OpenPOP:

SslStream stream = new SslStream(clientSocket.GetStream(), false, 
       delegate(object sender, X509Certificate cert, 
       X509Chain chain, SslPolicyErrors errors) { return true; }); 
+1

感謝您的更新並提供您的研究細節。 – 2008-12-08 14:06:40

+0

+1;有一個非常相似的要求。感謝您的研究。 – tsilb 2008-12-30 16:55:37

+0

一個小小的評論:我已經測試了幾個提到的實現,並且必須使用來自http://anmar.eu.org/projects/sharpmimetools/files/daily/的最新日報才能正確解碼MIME。 c#Mail無法正確解碼非ascii,並且大多數其他人以utf8,q編碼或其他細節失敗。 – 2009-01-03 02:40:31

回答

1

有幾個POP3客戶端實現在codeproject.com左右。我沒有評估他們,但也許你可以在那裏找到你需要的東西。如果不是,我可以說POP3是一個相當簡單的協議。如果您知道4-5個命令,您甚至可以用telnet讀取您的POP3盒子。

實際上你只需要this命令,也許一些base64解碼附件。而已。

+3

我認爲你低估了現實世界中多麼棘手和多變的MIME。 – 2009-07-14 12:57:01

+1

是的,你說對了,大聲笑 – 2009-12-31 21:11:31

1

Jmail.NET。不要看得更遠。請注意,免費版本不包括POP3。你會想要採用標準版本(或更多)。別擔心,它並不昂貴。

0

如果您不介意爲組件付款,我們過去曾經在chilkat上取得過巨大成功。對於幾百塊錢,你會得到一個充滿善意的圖書館。

2

C# Mail在Codeplex上可用,非常易於使用。

7

我最近爲一個項目做了一個OpenPop的實現,並對此感到滿意。它在罐子上做了什麼。 (並且它是免費的。)

1

DasBlog使用一個很好的(免費的) - 抓取源碼包。我用過它(但我不記得是誰寫的,而且我不在我的筆記本電腦上 - 我覺得Pavel L)?這不是完美的,它不會執行SSL,但它很好地工作,否則。

1

我製作了我自己的Mime解析器,並將它添加到CodePlex中,因爲當涉及奇怪的編碼或奇怪的附件組合時,我一直運行到未處理的異常中。 pop3客戶端的實現很粗糙,只是爲了測試目的,但是可以處理。 Mime解析器部分填充標準的MailMessage對象,以便您可以輕鬆地轉發它。我可以根據要求擴展/改進它,但現在它可以滿足我的需求。隨時檢查一下。

http://www.codeplex.com/mimeParser

1

Lumisoft是開源和包括POP客戶端(以及其他內容)。它已經存在很多年了,非常穩定。

6

SslStream類的構造函數被修改並上傳。 推薦使用版本沒有問題。

2

你可能想在你的排名Mail.dll .NET mail component。 它支持SSL,Unicode和多民族的電子郵件支持:

using(Pop3 pop3 = new Pop3()) 
{ 
    pop3.Connect("mail.host.com");  // Connect to server 
    pop3.Login("user", "password");  // Login 

    foreach(string uid in pop3.GetAll()) 
    { 
     IMail email = new MailBuilder() 
    .CreateFromEml(pop3.GetMessageByUID(uid)); 

     Console.WriteLine(email.Subject); 
    } 
    pop3.Close(true); 
} 

IMAP協議也支持。

請注意,這是我創建的商業產品。

您可以在這裏下載:http://www.lesnikowski.com/mail

28

我的OpenPop.NET的主要開發者之一。我剛剛參加了這次審查,並且不得不提出一些關於OpenPop.NET現狀的評論,因爲審查似乎已經過時了。

OpenPop.NET重新開始活躍。 SSL已在半年前推出。該項目進行了重大重構,現在更加穩定和易於使用。當我接管這個項目時,它有很多錯誤,截至目前,我目前還不知道。已經實現了很多額外的功能,主要是在MIME解析器部分。該項目由單元測試支持,每次發現錯誤時,都會創建一個單元測試,以在修復它之前顯示此錯誤。帶有示例的accompanying website現在存在。還有其他更新,但我不想全部提及它們。

此外,OpenPop.NET的許可證已從LGPL更改爲Public Domain(又名,沒有限制)。我認爲這是對商業用戶的重大改進。

2

一個新的選項(截至2014年)是從Xamarin MailKit,可在MIT許可下。它解析來自磁盤的消息比OpenPOP.NET快25倍。它包括對IMAP,POP3和SMTP的支持,似乎非常快速和強大。

相關問題