天天看點

基于Lumisoft.NET元件的POP3郵件接收和删除操作

Lumisoft.NET元件是一個非常強大的郵件發送、郵件接收等功能的開源元件,一般用它來處理郵件的相關操作,是非常合适的。之前也寫過一些該元件的随筆文章,不過主要是利用來發送郵件居多,最近由于項目需要,需要利用該元件來接收郵件,郵件通過POP3協定進行接收到本地,故對該元件進行了全面的了解和使用。本文主要是在此背景上,介紹該元件的POP3協定處理類的使用。Lumisoft.NET元件2013年作者有做了一定的更新,修複了一些問題,本文是基于該元件的最新版本進行開發使用。

首先使用POP3,必須建立一個POP3_Client的對象,然後通過Connect和Login進行連接配接和登入處理,相關的代碼如下所示。

POP3的的郵件下載下傳通過POP3_Client 對象的屬性Messages對象進行,每個POP3_ClientMessage代表一份完整的郵件資訊,一開始應該是隻是擷取一些簡單的郵件資訊(其中包括郵件的唯一辨別UID),這樣才能提高POP3協定的處理速度,如下代碼所示。

為了進一步擷取郵件頭部資訊,那麼需要進行下面的轉換

轉換後Mail_Message承載了郵件頭部檔案的很多必備資訊,如發送人,發送人名稱,接收位址,抄送人位址,郵件标題,郵件日期等等資訊。

這些郵件位址的資訊,都是通過Mail_t_Mailbox對象來記錄,一般包含郵件位址的Address和顯示名稱DisplayName,這樣非常友善用來顯示,如我們可以進行轉義,記錄到資料庫裡面。

每封Email會有一個在Pop3伺服器範圍内唯一的Id,檢查這個Id是否存在就可以知道以前有沒有接收過這封郵件

每份郵件的頭部資訊,都會包含一個日期的,如下可以擷取到該日期

标題資訊可以通過下面代碼擷取

如果需要進一步擷取郵件的正文内容,則需要對資訊進行進一步的轉換,把message對象進行MessageToByte操作,然後利用函數Mail_Message.ParseFromByte進行轉換。

郵件的附件是通過MIME_Entity來承載資訊的,是以我們需要把對象通過mime_message.GetAttachments(true, true)進行擷取,轉換為附件資訊。

如果需要進一步擷取附件裡面的檔案位元組流,那麼還需要進行進一步的轉換為MIME_b_SinglepartBase對象。

如果要區分郵件裡面的附件是内嵌圖檔附件還是真正的附件,那麼可以通過下面代碼進行判斷,如果是MIME_DispositionTypes.Attachment的就是普通附件,MIME_DispositionTypes.Inline的就是内嵌正文的附件。

伺服器上的郵件,可以通過POP3的協定方式進行删除,删除操作很簡單,主要是通過mail.MarkForDeletion進行辨別即可,執行個體操作代碼如下所示