使用C#和OpenPop.dll開發讀取POP3郵件程序


 制作一個ASP.NET MVC4論壇項目,該項目需要將以往十多年的Mail List(郵件列表)內容都導入到新的論壇中,因此需要能夠將郵件的標題、發布時間、發布人及郵件內容導入到論壇的數據庫內。.Net並沒有提供內置的讀取POP3郵件內容的類庫,因此,只有在網上查詢可用的類庫。

查詢的結果,OpenPop.dll(官網下載地址:http://sourceforge.net/projects/hpop/)是符合要求的一種。

下面的代碼只給出了最核心、最簡捷的內容,以Console方式完成。 利用Pop3Client對象的Connect方法,給出PoP3 Server、端口號、是否需要SSL連接;Authenticate方法則給出POP3的賬號及密碼。

在使用中,標題、發送人及發送時間及許多其它信息(如cc bcc to等等)都可以使用簡單的方法取出(如下面代碼所示),因為它們都是以plaintext的方式發送的,但對於郵件內容(body)和附件(attachment),由於涉及到multipart格式,因此,為能簡單地取出。在下面的代碼中,對於郵件內容的提取方式,最主要的是兩種:一種是text格式,另外一種是multipart格式,這兩種格式的提取辦法是不同的。

 下面的代碼由筆者實際調試,真實可用。

        using System;
using OpenPop.Pop3;
using OpenPop.Mime;
using System.Collections.Generic;


     #region using OpenPop.dll to read email public static void ReadPop3() { using (Pop3Client client = new Pop3Client()) { if (client.Connected) { client.Disconnect(); } // Connect to the server, false means don't use ssl client.Connect("pop3.263.net", 110, false); // Authenticate ourselves towards the server by email account and password client.Authenticate("wusir@263.net", "12345678"); //email count int messageCount = client.GetMessageCount(); //i = 1 is the first email; 1 is the oldest email for (int i = 1; i <= messageCount; i++) { Message message = client.GetMessage(i); string sender = message.Headers.From.DisplayName; string from = message.Headers.From.Address; string subject = message.Headers.Subject; DateTime Datesent = message.Headers.DateSent; MessagePart messagePart = message.MessagePart; //email body, string body = " "; if (messagePart.IsText) { body = messagePart.GetBodyAsText(); } else if (messagePart.IsMultiPart) { MessagePart plainTextPart = message.FindFirstPlainTextVersion(); if (plainTextPart != null) { // The message had a text/plain version - show that one body = plainTextPart.GetBodyAsText(); } else { // Try to find a body to show in some of the other text versions List<MessagePart> textVersions = message.FindAllTextVersions(); if (textVersions.Count >= 1) body = textVersions[0].GetBodyAsText(); else body = "<<OpenPop>> Cannot find a text version body in this message."; } } } } } #endregion

 更多幫助內容,可以參見官網幫助文檔:http://hpop.sourceforge.net/documentation/index.html

另外,如果直接讀取Outlook(OE)或者Windows Live Mail格式的郵件內容(擴展名.eml),可以使用LumiSoft.Net.dll完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM