- 相關(guān)推薦
基于BCB開(kāi)發(fā)具有身份認證功能的郵件發(fā)送程序
摘 要 本文介紹了如何增強BCB中發(fā)送電子郵件的NMSMTP控件的功能,實(shí)現具有身份認證功能的郵件發(fā)送程序。
關(guān)鍵詞 ESMTP,MIME,身份認證
1 引言
為了更有效地抑制垃圾郵件的泛濫,目前多數網(wǎng)站的郵件收發(fā)系統都使用了ESMTP服務(wù)的身份認證功能。即用戶(hù)發(fā)送郵件時(shí),需要對用戶(hù)的身份進(jìn)行驗證,如果帳號或密碼錯誤,郵件服務(wù)器會(huì )拒絕發(fā)送郵件。Borland C Builder 6中有豐富的控件供開(kāi)發(fā)者使用,其中當然也包括郵件發(fā)送控件NMSMTP,這個(gè)控件使用方便,但是惟一的缺點(diǎn)是不支持郵件發(fā)送時(shí)的身份認證功能。筆者通過(guò)對郵件發(fā)送協(xié)議的分析,在使用控件的基礎上設計了具有身份認證功能的郵件發(fā)送程序。
2 ESMTP協(xié)議分析
為了實(shí)現身份認證功能,目前ESMTP協(xié)議中增加了一部分內容,這就是身份認證。下面我們看看這段認證過(guò)程,以筆者在網(wǎng)易的郵箱為例(其中C表示客戶(hù)端,S表示郵件服務(wù)器):
(1)C: AUTH LOGIN
(2)S: 334 dXNlcm5hbWU6
(3)C: d3lxX2puX3NkX2Nu
(4)S: 334 UGFzc3dvcmQ6
(5)C: 密碼略去
(6)S: 235 Authentication successful
詳細說(shuō)明:
(1)客戶(hù)端向服務(wù)器發(fā)送認證指令。
(2)服務(wù)器返回Base64編碼串,334意味成功。編碼字符串解碼后為"username:",說(shuō)明要求客戶(hù)端發(fā)送用戶(hù)名。
(3)客戶(hù)端發(fā)送Base64編碼的用戶(hù)名串,此處為"wyq_jn_sd_cn"。
(4)服務(wù)器返回Base64編碼串,334意味成功。編碼字符串解碼后為"password:",說(shuō)明要求客戶(hù)端發(fā)送用戶(hù)口令。
(5)客戶(hù)端發(fā)送Base64編碼的口令串,此處略去。
(6)服務(wù)器返回普通字符串,235意味成功,表示認證成功可以發(fā)送郵件了。
3 MIME Base64編碼解釋
一般的計算機編碼的一個(gè)字節是8bit,0——FF就是256種不同的8bit組合。我們現在要介紹的這種Base64編碼則是每個(gè)字節6bit,共有26=64種組合。其中每種組合對應一個(gè)字符,這些字符是“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567 89 /!边@就意味著(zhù)每3個(gè)普通編碼可以轉換成4個(gè)Base64編碼,那么如果需要轉換的普通編碼不是3的整數倍怎么辦?Base64規定,位數不足的字節后面補0,然后差幾個(gè)字符補幾個(gè)‘=’號。
4 設計思路
我們可以使用NMSMTP控件與郵件服務(wù)器連接。通過(guò)調用Connect方法,然后監聽(tīng)OnConnect事件;在OnConnect事件里我們可以增加身份認證功能。這里是主要利用了NMSMTP從Powersock中繼承的一些基本網(wǎng)絡(luò )通訊函數,包括Read,DataAvailable,SendBuffer等來(lái)實(shí)現身份認證過(guò)程。如果身份認證成功,就可以繼續進(jìn)行郵件發(fā)送;否則,提示錯誤信息,斷開(kāi)網(wǎng)絡(luò )連接。
5 程序實(shí)現
使用BCB設計如圖1所示的窗體。
圖1 程序主界面
5.1 在登錄按鈕的onClick事件中調用連接函數
void __fastcall TForm1::Logon1Click(TObject *Sender)
{
AddLog("正在登錄" Edit1-
【基于BCB開(kāi)發(fā)具有身份認證功能的郵件發(fā)送程序】相關(guān)文章:
基于ESMTP的電子郵件發(fā)送程序的設計與實(shí)現11-16
開(kāi)發(fā)基于路由器VR功能的寬帶應用03-07
基于LabVIEW的自動(dòng)生成Excel報告功能開(kāi)發(fā)03-07
淺談基于Pushlet推技術(shù)的網(wǎng)絡(luò )應用程序開(kāi)發(fā)的研究03-01
基于Windows2000開(kāi)發(fā)WDM設備驅動(dòng)程序的方法03-19
基于A(yíng)SP技術(shù)開(kāi)發(fā)Web數據庫檢索程序03-18
證據開(kāi)示程序的功能03-26
簡(jiǎn)易電子郵件系統的開(kāi)發(fā)11-23
設計具有ARQ功能的全雙工數據電臺03-18