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