在JavaMail的基礎(chǔ)上構(gòu)建自己的Email Channel
基礎(chǔ)知識
Email入門
不說太多,至于什么是Email,Email給我們帶來什么好處,也就不嘮叨了。但是先得看下Email的數(shù)據(jù)結(jié)構(gòu),因為我們需要根據(jù)領(lǐng)域邏輯,進行面向?qū)ο蟮脑O(shè)計。

現(xiàn)在通過webmail和outlook發(fā)的郵件一般都是MIME郵件,如上圖,但不同的client也可能稍微有所不同。
郵件是由郵件頭和郵件體組成的,每個體部分由頭域、空行、體組成。但幾個值得注意的header
Content-Type
每個郵件體都有個content type。說明該郵件體的類型,編碼,boundary等。包括:主類型,如Multipart,Text,Image;子類型:如plain,html,alternative;參數(shù):如charset,boundary等。
Content-Disposition
我們可以通過參數(shù)來辨別某個郵件體是否是附件,附件的類型,附件的名字等。
Content-Id
Content id是郵件體的唯一標識,可以被其他郵件體所引用。我們發(fā)的HTML郵件里常常可以引用附件中的圖片,就是通過CID引用的。
Content-Transfer-Encoding
轉(zhuǎn)換郵件編碼格式用于傳輸。有些傳輸協(xié)議對數(shù)據(jù)格式有所限制。
IMAP4 和 POP3
IMAP4優(yōu)于 POP3
· IMAP可預(yù)取email的元數(shù)據(jù)信息:header,根據(jù)header做過濾。
· 可以實現(xiàn)直接連接到服務(wù)器上進行郵件的篩選,我把它稱為select操作。
JavaMail
· Transport發(fā)郵件:SMTPTransport
· Store收郵件:IMAPStore, POP3Store
JavaMail為MIME郵件設(shè)計的數(shù)據(jù)結(jié)構(gòu):
參考文章:
http://www.javaworld.com/javaworld/jw-10-2001/jw-1026-javamail.html?page=2
http://en.wikipedia.org/wiki/MIME
http://www.freesoft.org/CIE/RFC/1521/
<<面向?qū)ο蟮泥]件解析器的設(shè)計與實現(xiàn)>>