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

現(xiàn)在通過(guò)webmail和outlook發(fā)的郵件一般都是MIME郵件,如上圖,但不同的client也可能稍微有所不同。
郵件是由郵件頭和郵件體組成的,每個(gè)體部分由頭域、空行、體組成。但幾個(gè)值得注意的header
Content-Type
每個(gè)郵件體都有個(gè)content type。說(shuō)明該郵件體的類型,編碼,boundary等。包括:主類型,如Multipart,Text,Image;子類型:如plain,html,alternative;參數(shù):如charset,boundary等。
Content-Disposition
我們可以通過(guò)參數(shù)來(lái)辨別某個(gè)郵件體是否是附件,附件的類型,附件的名字等。
Content-Id
Content id是郵件體的唯一標(biāo)識(shí),可以被其他郵件體所引用。我們發(fā)的HTML郵件里常??梢砸酶郊械膱D片,就是通過(guò)CID引用的。
Content-Transfer-Encoding
轉(zhuǎn)換郵件編碼格式用于傳輸。有些傳輸協(xié)議對(duì)數(shù)據(jù)格式有所限制。
IMAP4 和 POP3
IMAP4優(yōu)于 POP3
· IMAP可預(yù)取email的元數(shù)據(jù)信息:header,根據(jù)header做過(guò)濾。
· 可以實(shí)現(xiàn)直接連接到服務(wù)器上進(jìn)行郵件的篩選,我把它稱為select操作。
JavaMail
· Transport發(fā)郵件:SMTPTransport
· Store收郵件:IMAPStore, POP3Store
JavaMail為MIME郵件設(shè)計(jì)的數(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è)計(jì)與實(shí)現(xiàn)>>