宋德強(qiáng),高 建
(盤錦職業(yè)技術(shù)學(xué)院,盤錦 124000)
電子郵件的發(fā)送、接收等環(huán)節(jié)涉及到非常復(fù)雜的細(xì)節(jié)問(wèn)題,涉及到各種通信協(xié)議的綜合運(yùn)用。對(duì)于普通用戶來(lái)說(shuō),電子郵件的發(fā)送與接收操作非常簡(jiǎn)單,但要通過(guò)程序?qū)崿F(xiàn)電子郵件功能就需要運(yùn)用各種API,同時(shí)要確保電子郵件系統(tǒng)與API接口輸出協(xié)議之間的耦合。在基于Java語(yǔ)言的電子郵件編程接口Java Mail中為程序開(kāi)發(fā)人員提供了一些抽象類,它們的主要作用是為電子郵件系統(tǒng)定義通用類及其接口,為程序開(kāi)發(fā)人員提供易用、擴(kuò)展性良好的視圖。Java Mail API接口是以Java語(yǔ)言為基礎(chǔ),用于處理電子郵件信息的接口,也可用于處理一部分基礎(chǔ)協(xié)議。通常來(lái)說(shuō),電子郵件系統(tǒng)需要實(shí)現(xiàn)兩種不同的協(xié)議。Sun用于服務(wù)的原語(yǔ)——傳輸(Transport)服務(wù)可以將消息傳送至指定的目的地。SMTP傳輸是目前使用最廣泛的傳輸協(xié)議類型是。而另一類服務(wù)是存儲(chǔ)(Store),它可以用于獲取以及發(fā)送至用戶郵箱的消息。盡管IMAP存儲(chǔ)應(yīng)用日益普及,然而大部分用戶依然對(duì)POP3存儲(chǔ)更加熟悉。POP3、IMAP接口相同,使用JavaMail接口的任意電子郵件系統(tǒng)都可以通過(guò)同一種方式訪問(wèn)POP3存儲(chǔ)、IMAP存儲(chǔ)。像SMTP、X.400這樣具體的消息傳輸也可以交換使用??傊?,Java Mail API具有使多項(xiàng)功能同時(shí)實(shí)現(xiàn)的能力。運(yùn)用傳輸、存儲(chǔ)著兩個(gè)基礎(chǔ)服務(wù),將用戶信息轉(zhuǎn)換為代碼,通過(guò)網(wǎng)絡(luò)傳輸,然后再將代碼轉(zhuǎn)換成信息,實(shí)現(xiàn)用戶之間的電子郵件通信。而通過(guò)網(wǎng)絡(luò)轉(zhuǎn)換、傳輸、接收信息是Java語(yǔ)言實(shí)現(xiàn)信息交換的核心功能,這也是Java語(yǔ)言被廣泛應(yīng)用于電子息傳輸系統(tǒng)中的主要原因。
從本質(zhì)上來(lái)說(shuō),SMTP協(xié)議的主要作用是實(shí)現(xiàn)基于Java語(yǔ)言的電子郵件發(fā)送信息的功能。利用SMTP協(xié)議實(shí)現(xiàn)電子郵件傳輸?shù)幕静襟E如下:
(1)打開(kāi)JavaMail會(huì)話框,用以下兩種方式獲取會(huì)話(session),第一種,利用session.getDefultInstance()得到共享session;而是利用Session.getInstance()自建新的session。其中與別人分享的會(huì)話框是他人向你發(fā)送信息后系統(tǒng)生成的會(huì)話框,用戶可以利用這個(gè)他人發(fā)送來(lái)的信息框和對(duì)方交流信息。假如是用戶自己想要發(fā)送消息給對(duì)方,就可以通過(guò)自建會(huì)話框的方式向?qū)Ψ桨l(fā)送消息,實(shí)現(xiàn)信息交流。
(2)構(gòu)造消息。在啟動(dòng)會(huì)話框之后需要構(gòu)造消息。一般情況下,我們可以利用一個(gè)Mime Message(session)構(gòu)造器程序?qū)崿F(xiàn)消息構(gòu)造。通過(guò)該構(gòu)造器程序可以對(duì)郵件的發(fā)送方、接收方、郵件主題、郵件內(nèi)容進(jìn)行編輯,相關(guān)核心代碼:Mime Message message=new Mime Message(session);//創(chuàng) 建 消 息 message.setFrom(Address address);//發(fā)送方地址 message.setRecipient(Message RecipientType type,Address address);//接收方地址message.setSubject(String subject);//郵件主題 message.setText(string text);//郵件內(nèi)容。消息構(gòu)造好之后將這些需要傳輸?shù)男畔⑾绒D(zhuǎn)換成相應(yīng)的代碼,便于進(jìn)行網(wǎng)絡(luò)傳輸。
(3)使用傳輸類傳輸消息。經(jīng)過(guò)上述兩步處理之后,需要利用Transport類實(shí)現(xiàn)消息傳輸:static Transport.send(Message message)。
電子郵件傳輸?shù)侥康牡睾笮枰M(jìn)行接收處理。電子郵件的接收與電子郵件的傳輸類似,目前主要利用POP3協(xié)議實(shí)現(xiàn)郵件信息接收,其基本步驟如下:
(1)電子郵件信息的接收與電子郵件信息傳輸?shù)谝徊筋愃?,都需要打開(kāi)一個(gè)JavaMail會(huì)話框,這個(gè)會(huì)話框也就是上文所述的和他人分享的信息交流框。
(2)在打開(kāi)會(huì)話框之后,可以利用POP3協(xié)議生成信息儲(chǔ)存箱,用于儲(chǔ)存?zhèn)鬏斶^(guò)來(lái)的信息,方便用戶查閱;首先需獲得缺省文件夾及郵箱,獲取消息并處理。
Folder folder=store.getDefaultFolder();//獲得缺省文件夾
folder=folder.getFolder(“INBOX”);//指定收件箱
Folder.open(Folder.READ ONLY);//只讀方式打開(kāi)
Message[]messages=folder.getMessages();//獲得消息封裝
(3)消息存儲(chǔ)之后,用戶可以打開(kāi)信息框查閱信息,獲取消息內(nèi)容。
(4)經(jīng)過(guò)上述步驟處理后,最后一步是輸出消息內(nèi)容,將程序代碼轉(zhuǎn)換成這信息。這樣一來(lái)就和傳輸程序構(gòu)成了交替循環(huán)的工序。通過(guò)電子郵件傳輸和電子郵件接收者兩個(gè)環(huán)節(jié)實(shí)現(xiàn)Java語(yǔ)言傳輸。
綜上所述,不斷發(fā)展的電子郵件系統(tǒng)為人們的交流溝通提供了極大的便利,Java語(yǔ)言在電子郵件中的應(yīng)用極大地促進(jìn)了電子郵件通信技術(shù)的發(fā)展,可以預(yù)見(jiàn),今后Java語(yǔ)言在電子郵件系統(tǒng)開(kāi)發(fā)中的應(yīng)用將會(huì)越來(lái)越廣泛。