【摘要】隨著社會(huì)的發(fā)展,科技的進(jìn)步,作為信息載體的計(jì)算機(jī)日益顯露出其舉足輕重的地位。當(dāng)今社會(huì)已步入了信息社會(huì),知識(shí)經(jīng)濟(jì)將成為新世紀(jì)的主導(dǎo)產(chǎn)業(yè)。人們傳統(tǒng)的聯(lián)系方式也在不斷的被改變。伴隨著Internet的發(fā)展,電子郵件以其使用簡(jiǎn)易、投遞迅速、收費(fèi)低廉,易于保存、全球暢通無(wú)阻等等優(yōu)點(diǎn)被廣泛地應(yīng)用,它使人們的交流方式得到了極大的改變。電子郵件已是人們溝通、交流的重要工具。
【關(guān)鍵詞】現(xiàn)代化;郵件;系統(tǒng)
【中圖號(hào)】TP393.098【文獻(xiàn)標(biāo)示碼】A【文章編號(hào)】1005-1074(2009)03-0057-01
1郵件發(fā)送
隨著網(wǎng)絡(luò)應(yīng)用的不斷推廣,電子郵件越來(lái)越多的被大家使用。雖然我們往往將電子郵件與Foxmail、Outlook這樣的電子郵件客戶端聯(lián)系起來(lái),但是往往我們也需要自己編程實(shí)現(xiàn)發(fā)送接收郵件,例如在一個(gè)網(wǎng)站注冊(cè)用戶后網(wǎng)站發(fā)出的回執(zhí)mail,或者在網(wǎng)絡(luò)購(gòu)物的時(shí)候,在完成訂單后的幾分鐘之內(nèi)發(fā)送確認(rèn)電子郵件。對(duì)于這樣的需求,我們不能通過(guò)已有的郵件客戶端而需要自己編寫(xiě)郵件發(fā)送或者處理程序。在這里向大家講解一下如何利用JavaMail來(lái)實(shí)現(xiàn)郵件的收發(fā)。
1.1發(fā)送帶附件的郵件我們平時(shí)發(fā)送的郵件主要可以分解成2大部分,一個(gè)是發(fā)信人,接信人,主題等郵件標(biāo)頭,另外一部分是郵件內(nèi)容,它包括了郵件的附件。我們?cè)诎l(fā)送普通郵件的時(shí)候content設(shè)置的類型是\"text/html\",帶上附件后,我們需要把content的類型設(shè)置成Multipart,這時(shí)content包括了附件和\"text/html\"類型的正文。在發(fā)mail時(shí)需要注意字符集的問(wèn)題。不但content里要設(shè)置,而且文件名也需要設(shè)置,而且文件也去掉mbp.set File Name(Mime Utility.encode Word(fds.get Name),\"GB2312\",1);這句話,那么你選中的附件還是會(huì)帶到郵件里,但是在附件里看不到??梢酝ㄟ^(guò)查看郵件大小知道。我們利用這個(gè)特點(diǎn)來(lái)實(shí)現(xiàn)發(fā)送content中寫(xiě)的是html語(yǔ)言,而且包含圖片信息的郵件。
1.2發(fā)送content中包含html頁(yè)面的郵件大家都知道html語(yǔ)言可以帶上圖片鏈接,那么我們?cè)诎l(fā)送郵件的時(shí)候就需要對(duì)這些鏈接的圖片做特殊處理。否則在對(duì)方接收到郵件的時(shí)候會(huì)看不到圖片。我們特殊處理的方法就是把它們當(dāng)成附件發(fā)送,但不顯示在附件里。要做到這些就首先需要對(duì)輸入的content進(jìn)行解析,找到所帶圖片的路徑。然后把content中這段代碼變成。我們?cè)诎l(fā)送附件的時(shí)候用。
1.3接收帶附件的郵件在帶有附件的郵件中,消息的內(nèi)容是Multipart型,這樣我們就需要解析它來(lái)得到content和附件(它是發(fā)送帶附件的郵件的逆向過(guò)程)。在使用outlook、foxmail這些電子郵件客戶端的時(shí)候會(huì)發(fā)現(xiàn),我們的郵件被從服務(wù)器上下載下來(lái)并且保存到本地硬盤(pán)上了,這種方式方便我們離線瀏覽郵件。
2郵件的接收功能的實(shí)現(xiàn)
在JavaMail中,接收文本郵件和HTML格式郵件的處理方法基本上是一致的。在這個(gè)程序中,首先,由用戶輸入郵件服務(wù)器,由用戶給出郵箱的用戶名和密碼,登陸郵件服務(wù)器查看郵件。此程序,仍然使用HTMT頁(yè)面作為用戶輸入信息頁(yè)面,之后采用JSP和JavaBean的方法顯示用戶郵箱中郵件的數(shù)目和查看單封郵件。
3郵件過(guò)濾
3.1IP地址過(guò)濾根據(jù)預(yù)先存儲(chǔ)在文本文檔里的IP進(jìn)行IP地址過(guò)濾,當(dāng)接收到郵件,如果和文本文檔里的IP地址相匹配,則說(shuō)明這是一封非法郵件,否則是正常郵件。在Java中用Filter實(shí)現(xiàn)IP過(guò)濾的一種算法。
如何將IP地址轉(zhuǎn)化為十進(jìn)制數(shù)。我們通常在BBS或網(wǎng)上下載的IP地址數(shù)據(jù)庫(kù)中的IP地址并非是我們常見(jiàn)的格式(61.175.232.30),而是這種(1034938398)類型的數(shù)據(jù),看起來(lái)這兩個(gè)數(shù)據(jù)好像沒(méi)有關(guān)連,很復(fù)雜,其實(shí)并不復(fù)雜,以“61.175.232.30”這個(gè)IP地址為例,IP地址轉(zhuǎn)換成數(shù)字串方法如下:先將“61.175.232.30”轉(zhuǎn)換為十六進(jìn)制“3d.af.e8.1e”,然后去掉小數(shù)點(diǎn)后,變?yōu)椤?dafe81e”,最后將這個(gè)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制“1034938398”,那么“61.175.232.30”就變?yōu)椤?034938398”了。其實(shí)網(wǎng)上的IP地址過(guò)濾解決并非那么復(fù)雜,我們可以用“折半查找”法逐步縮小范圍,以求最終解決問(wèn)題。如果局域網(wǎng)內(nèi)計(jì)算機(jī)TCP/IP設(shè)置為“指定IP地址”,則檢查重點(diǎn)放在IP地址、子網(wǎng)掩碼、DNS、網(wǎng)關(guān)及WINS的相關(guān)設(shè)置上提到用ip2addr函數(shù)直接讀取IP數(shù)據(jù)庫(kù),二進(jìn)制文件折半法:0.092,可見(jiàn)二進(jìn)制文件折半法還比MySQL法略有優(yōu)勢(shì)。
3.2域名過(guò)濾把一些自定義的域名或一些本來(lái)就有的域名存儲(chǔ)在文本文檔里,當(dāng)接收到郵件,就和文本文檔里的那些域名逐字比較,比完第一個(gè)字母就去那些第一個(gè)字母和發(fā)過(guò)郵件的域名第一個(gè)字母不一樣的域名,然后就進(jìn)行比較第二個(gè),第三個(gè),直到比較完為止,如果比較完的域名和文本文檔里其中一個(gè)相匹配,則認(rèn)為這是一封非法郵件,如果比較完了也沒(méi)有一個(gè)匹配的就認(rèn)為正常郵件。JavaMail API中帶的文檔是很有用的。您能夠在JavaMail下的/docs/javadocs/index.html找到他。第二部分主要將分析郵件程式的組件。您能夠通過(guò)閱讀文檔來(lái)獲得更多這方面的信息。組件發(fā)送郵件需要使用JavaMail,他使對(duì)郵件的操作變得簡(jiǎn)單易用。
建數(shù)法過(guò)濾域名步驟:設(shè)置域名過(guò)濾的步驟如下:①打開(kāi)“安全設(shè)置”主菜單,進(jìn)入“域名過(guò)濾”子菜單。③選中“開(kāi)啟域名過(guò)濾”選項(xiàng)啟用域名過(guò)濾功能。③在“生效時(shí)間”欄內(nèi)填入您希望本條規(guī)則生效的起始時(shí)間和終止時(shí)間。時(shí)間請(qǐng)按hhmm格式輸入,例如0803,表示8時(shí)3分。④在“域名”欄內(nèi)填入被過(guò)濾的網(wǎng)部的域名或域名的—部分,為空表示禁止訪問(wèn)所有網(wǎng)站。如果您在此處填入某一個(gè)字符串(不區(qū)分大小寫(xiě)),則局域網(wǎng)中的計(jì)算機(jī)將不能訪問(wèn)所有域名中含有該字符串的網(wǎng)站。⑤選中“啟用”,啟用本條過(guò)濾規(guī)則。⑥單擊“保存”完成設(shè)置。
參考文獻(xiàn)
[1]鐘忺,劉春燕.基于JavaMail API的郵件認(rèn)證與接收[J].計(jì)算機(jī)與數(shù)字工程,2007,(3)