郵件解析引擎FastMail庫大功告成!

1          概述

郵件解析庫API完全使用面向對象技術設計,使用C++語言開發的用於郵件解析和組裝的庫。它提供了一些類用來解析和組裝Internet郵件,如MimeMessageMimeBodyPart,用於Internet郵件協議實現並且遵循RFC822RFC2045規範。這些API庫用於應用程序的開發。

1.1        術語

RFCRequest For Comments, 請求註解, Internet標準(草案)

MIMEMultipurpose Internet Mail Extension protocol, 多用途的網際郵件擴充協議

2          郵件解析庫的實現

2.1        實現過程

本郵件解析庫(FastMail)參考JavaMail的結構設計,有與之類似的接口和類。本解析庫用到基礎庫Fast庫參考ACE庫和STLJava Framework庫設計,包含一些字符串處理和容器的類。設計它們的目的是爲了簡化庫的接口,並且儘量與Java庫的接口兼容,同時使用完全標準的C++特性,使庫更易維護更穩固。

這兩個庫從2004-6月底開始開發設計至<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2004-10-10完成,歷時3個多月,由於不是全力投入,實際耗時約2個月,由於有JavaMailACESTL庫的借鑑,所以設計起來還比較順利。兩個庫的代碼量約有32000行代碼。類設計合理並且提供豐富的接口供二次開發和改造。

下面是兩個庫的文件列表以及郵件解析庫的類的介紹(Fast庫另有文檔專門介紹):

2.2        文件列表

FAST基礎庫

       comm./

       comm./FastArray.h               數組類

       comm./FastAutoPtr.h            自動管理指針類

       comm./FastBase.h                FAST庫公共定義,包含一個完整的內存分配器類

       comm./FastHashMap.h         HashMap容器類

       comm./FastMap.h                Map容器類

       comm./FastString.h                     FastString字符串處理類

       comm./FastVector.h                     Vector容器類

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

郵件解析引擎FastMail

       mime/

       mime/CharsetUtils.cpp          字符串編碼和解碼工具

       mime/CharsetUtils.h

       mime/MimeActivation.cpp     郵件解析初始化工具

       mime/MimeActivation.h

       mime/MimeBase.h                郵件解析公共定義

       mime/MimeContainer.cpp      郵件解析Multipart容器

       mime/MimeContainer.h

       mime/MimeEntity.cpp           郵件解析MIME實體類

       mime/MimeEntity.h

       mime/MimeMessage.cpp       郵件解析MIME郵件類

       mime/MimeMessage.h

       mime/MimeObject.cpp          郵件解析MIME對象類

       mime/MimeObject.h

       mime/MimeParser.cpp          郵件解析工具類

       mime/MimeParser.h

       mime/MimeUtility.cpp           郵件解析工具類

       mime/MimeUtility.h

 

3          郵件解析庫的類

3.1        類的實現

郵件解析庫包含一系列的類,主要有MimeMessage(郵件實現類)、MimeBodyPart(郵件正文段體類)、MimeMultipart(郵件多部段體類)、InternetHeaders(郵件頭類)、InternetAddress(郵件地址類)和ContentType(段體類型類)等。解析和組裝郵件主要使用這些類進行組裝和分解。

下面是所有的類的說明:

類名

名稱

說明

基類

ContentDisposition

MIME郵件頭

實現MIME郵件頭的ContentDisposition

 

ContentID

MIME郵件頭

實現MIME郵件頭的ContentID

 

ContentType

MIME郵件頭

實現MIME郵件頭的ContentType

 

MimeType

MIME類型類

實現MIME的類型,記錄在ContentType裏,如text/plain

 

ConverterFactory

編碼轉換工廠類

用於創建編碼轉換對象

 

ICodeConverter

編碼轉換接口類

 

 

Base64Converter

BASE64編碼類

BASE64的編碼和解碼

ICodeConverter

QPConverter

QP編碼類

Quote-Printable的編碼和解碼

ICodeConverter

hdr

MIME郵件頭類

實現MIME郵件頭HEADER

 

HeaderTokenizer

郵件頭分解類

實現分解MIME郵件頭的各元素,如Content-Typemimetype和各個參數。

 

IMimePart

MIME郵件段體接口類

郵件段體類的基類

 

MimeBodyPart

MIME郵件段體類

實現MIME郵件各個段體的類

IMimePart

MimeMessage

MIME郵件類

MIME郵件主類

IMimePart

IMultipart

多部分接口類

多部分類的基類

 

MimeMultipart

多部分實現類

保存段體類對象的多部分容器類

IMultipart

InternetAddress

MIME郵件地址類

實現MIME郵件地址的類

 

InternetHeaders

MIME郵件頭部分類

實現保存MIME各郵件頭的容器類

 

MailDateFormat

郵件時間轉換類

實現MIME郵件的格式的時間轉換

 

MailDateParser

時間分解處理類

實現MIME郵件格式的時間的分解

 

MimeInitialization

郵件解析全局初始化類

實現初始化MIME郵件用到的各個全局變量

 

MimetypesFileTypeMap

郵件Mime類型映射類

實現郵件MimeTypeFileType類型的映射表,用於查詢

 

MimeUtility

MIME郵件分析工具類

實現郵件解析用到的各個解析工具函數

 

ParameterList

參數列表類

實現ContentTypeContentDisposition用到的參數列表

 

SystemProperty

系統環境類

實現讀取系統環境參數的方法

 

UniqueValue

郵件唯一值生成類

實現生成MIME郵件用到的唯一值的類,如boundary

 

3.2        類圖

r_mime_class.gif

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

3.3        MimeMessage

現在介紹一下最主要的也是提供主要的調用接口API的類MimeMessage

MimeMessage提供了一系列的方法供調用者使用,如定義了獲取地址信息和獲取郵件正文內容的結構(可以爲具體的數據也可以爲一個MimeMultipart對象),用來實現RFC822MIME規範。

一個MimeMessage對象裏保存了一個郵件內容數據(Content),以及一些記錄特定的郵件地址信息(如發件人(Sender)和收件人(recipients))的屬性(InternetHeaders)。還有關於這封郵件的結構信息(structural information),以及它的郵件主體(body)的段體類型(Content-Type)。

下面用圖來描述一個MimeMessage對象內部可能的結構:

3.4        MimeMessage類結構圖

 r_mimemessage.gif

 
。。。未完待續

4          參考文獻

[1]JavaMail 1.2

[2]JavaMailTM API Design Specification Version 1.2

[3]C++網絡編程 1:運用ACE和模式消除複雜性》

[4] http://www.faqs.org/rfcs/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章