基于bcb開(kāi)發(fā)具有身份認(rèn)證功能的郵件發(fā)送程序_第1頁(yè)
已閱讀1頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于BCB開(kāi)發(fā)具有身份認(rèn)證功能的郵件發(fā)送程序摘要本文介紹了如何增強(qiáng)BCB中發(fā)送電子郵件的NMSMTP控件的功能,實(shí)現(xiàn)具有身份認(rèn)證功能的郵件發(fā)送程序。關(guān)鍵詞ESMTP,MIME,身份認(rèn)證1引言為了更有效地抑制垃圾郵件的泛濫,目前多數(shù)網(wǎng)站的郵件收發(fā)系統(tǒng)都使用了ESMTP服務(wù)的身份認(rèn)證功能。即用戶(hù)發(fā)送郵件時(shí),需要對(duì)用戶(hù)的身份進(jìn)行驗(yàn)證,如果帳號(hào)或密碼錯(cuò)誤,郵件服務(wù)器會(huì)拒絕發(fā)送郵件。BlCBuilder6中有豐富的控件供開(kāi)發(fā)者使用,其中當(dāng)然也包括

2、郵件發(fā)送控件NMSMTP,這個(gè)控件使用方便,但是惟一的缺點(diǎn)是不支持郵件發(fā)送時(shí)的身份認(rèn)證功能。筆者通過(guò)對(duì)郵件發(fā)送協(xié)議的分析,在使用控件的基礎(chǔ)上設(shè)計(jì)了具有身份認(rèn)證功能的郵件發(fā)送程序。2ESMTP協(xié)議分析為了實(shí)現(xiàn)身份認(rèn)證功能,目前ESMTP協(xié)議中增加了一部分內(nèi)容,這就是身份認(rèn)證。下面我們看看這段認(rèn)證過(guò)程,以筆者在網(wǎng)易的郵箱為例(其中C表示客戶(hù)端,S表示郵件服務(wù)器):(1)C:AUTHLOGIN(2)S:334dXNlcm5hbWU6(3)C:

3、d3lxX2puX3NkX2Nu(4)S:334UGFzc3dvcmQ6(5)C:密碼略去(6)S:235Authenticationsuccessful詳細(xì)說(shuō)明:(1)客戶(hù)端向服務(wù)器發(fā)送認(rèn)證指令。(2)服務(wù)器返回Base64編碼串,334意味成功。編碼字符串解碼后為“username:“,說(shuō)明要求客戶(hù)端發(fā)送用戶(hù)名。(3)客戶(hù)端發(fā)送Base64編碼的用戶(hù)名串,此處為“wyq_jn_sd_cn“。(4)服務(wù)器返回Base64編碼串,334

4、意味成功。編碼字符串解碼后為“passwd:“,說(shuō)明要求客戶(hù)端發(fā)送用戶(hù)口令。(5)客戶(hù)端發(fā)送Base64編碼的口令串,此處略去。(6)服務(wù)器返回普通字符串,235意味成功,表示認(rèn)證成功可以發(fā)送郵件了。3MIMEBase64編碼解釋一般的計(jì)算機(jī)編碼的一個(gè)字節(jié)是8bit,0——FF就是256種不同的8bit組合。我們現(xiàn)在要介紹的這種Base64編碼則是每個(gè)字節(jié)6bit,共有26=64種組合。其中每種組合對(duì)應(yīng)一個(gè)字符,這些字符是“ABCDEF

5、GHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789。”這就意味著每3個(gè)普通編碼可以轉(zhuǎn)換成4個(gè)Base64編碼,那么如果需要轉(zhuǎn)換的普通編碼不是3的整數(shù)倍怎么辦?Base64規(guī)定,位數(shù)不足的字節(jié)后面補(bǔ)0,然后差幾個(gè)字符補(bǔ)幾個(gè)‘=’號(hào)。4設(shè)計(jì)思路我們可以使用NMSMTP控件與郵件服務(wù)器連接。通過(guò)調(diào)用Connect方法,然后監(jiān)聽(tīng)OnConnect事件;在OnConnect事件里我們可

6、以增加身份認(rèn)證功能。這里是主要利用了NMSMTP從Powersock中繼承的一些基本網(wǎng)絡(luò)通訊函數(shù),包括ReadDataAvailableSendBuffer等來(lái)實(shí)現(xiàn)身份認(rèn)證過(guò)程。如果身份認(rèn)證成功,就可以繼續(xù)進(jìn)334意味著服務(wù)器要求輸入口令if(rData.TrimLeft().SubString(03)==“334“)AddLog(“正在驗(yàn)證口令......“)b_ok=trueif(!b_ok)AddLog(“登錄失敗,正在退出...

7、...“)NMSMTP1Disconnect()returnrData=““Data=encode(Edit5Text)“rn“口令轉(zhuǎn)換成Base64編碼。NMSMTP1SendBuffer(Data.c_str()Data.Length())發(fā)送口令rData=WaitFReply(5)b_ok=falseif(rData.Length()=3)if(rData.TrimLeft().SubString(03)==“235“)AddL

8、og(“登錄成功......“)b_ok=trueif(!b_ok)AddLog(“登錄失敗,正在退出......“)NMSMTP1Disconnect()returnSendMailEnabled=true允許發(fā)送郵件disconnectEnabled=true允許斷開(kāi)連接Logon1Enabled=false不允許再次登錄5.3MIMEBase64編碼轉(zhuǎn)換AnsiStringTFm1::encode(AnsiStrings)intm

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論