freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

電子郵件客戶端軟件畢業(yè)論文-資料下載頁

2025-06-27 16:50本頁面
  

【正文】 ode xx 科技大學(xué)本科生畢業(yè)論文 28第 28 頁 共 52 頁由于 ESMTP 的 LOGIN 認(rèn)證機制是采用 Base64 編碼,當(dāng)用戶發(fā)出 AUTHLOGIN 的命令后,服務(wù)器返回 334 的應(yīng)答碼等待用戶輸入。如果身份確認(rèn)后服務(wù)器返回 235 的應(yīng)答碼,否則返回失敗信息。所以要將用戶名和密碼轉(zhuǎn)換成 Base64 編碼然后再發(fā)給服務(wù)器。此函數(shù)的作用就是把給定的字符串轉(zhuǎn)換成相應(yīng)的 Base64 編碼的字符串。5) 發(fā)送 SMTP 命令的函數(shù) SendCommand這個函數(shù)的作用是把 SMTP 命令的字符串轉(zhuǎn)換成對應(yīng)的字節(jié)型值(C#中規(guī)定的Write 方法只能寫入字節(jié)型的數(shù)據(jù))然后寫入網(wǎng)絡(luò)中,如果操作成功就返回一個標(biāo)志為真的布爾型變量,如果操作失敗或者發(fā)生異常就返回標(biāo)志為假的布爾型變量。具體代碼如下所示:private bool SendCommand(string str) { //定義一個數(shù)組byte[] WriteBuffer。 //設(shè)定一個布爾類型的變量bool state=false。 WriteBuffer = (str)。//加入防錯機制,可以有效提高程序運行的效率和捕獲出錯信息try{//向網(wǎng)絡(luò)中寫入數(shù)據(jù) xx 科技大學(xué)本科生畢業(yè)論文 29第 29 頁 共 52 頁(WriteBuffer,0,)。 state=true。}catch(Exception ex){//返回出錯信息 ( ())。state=false。}//返回標(biāo)志位return state。 }6) 接受服務(wù)器應(yīng)答的函數(shù) RecvResponse它的作用就是從網(wǎng)絡(luò)流中讀取服務(wù)器返回的字節(jié)型的信息,將其轉(zhuǎn)換成字符串型的變量,然后將其返回,可以通過其返回值來判斷操作是否成功。具體實現(xiàn)代碼如下所示:private string RecvResponse() { int StreamSize=0。 string ReturnValue =。 xx 科技大學(xué)本科生畢業(yè)論文 30第 30 頁 共 52 頁//定義一個字節(jié)型的數(shù)組byte[] ReadBuffer = new byte[1024] 。 try { //從網(wǎng)絡(luò)流中讀取數(shù)據(jù),并返回讀取的個數(shù)StreamSize=(ReadBuffer,0,)。 } catch (Exception ex){ //返回異常信息( ())。} if (StreamSize!=0) { //將當(dāng)前讀取的信息轉(zhuǎn)換成字符串型然后返回ReturnValue= (ReadBuffer).Substring(0,StreamSize)。 } return ReturnValue。} xx 科技大學(xué)本科生畢業(yè)論文 31第 31 頁 共 52 頁7) 重載的函數(shù) Dialog它們的作用是與服務(wù)器交互,發(fā)送命令并接收回應(yīng)。不同的是參數(shù)是字符串類型的那個函數(shù),每次發(fā)送一條命令,并接受服務(wù)器的響應(yīng),根據(jù)響應(yīng)的信息來判斷交互的結(jié)果是否成功。而參數(shù)是字符串?dāng)?shù)組的函數(shù)每次發(fā)送的是一組命令,用于和服務(wù)器的交互,這個函數(shù)主要是用于 ESMTP 服務(wù)器的驗證的功能,因為驗證的過程是一個等待然后又輸入的過程,因此將他們放在一個數(shù)組中有利于理解和操作。而他們的實現(xiàn)主要是通過調(diào)用上面的發(fā)送 SMTP 命令函數(shù) SendCommand 以及接受 SMTP 服務(wù)器響應(yīng)的函數(shù) RecvResponse 來實現(xiàn)的。具體的代碼如下所示:private bool Dialog(string str,string errstr) { bool flag=false。if(str==null||()==) { flag=true。 } if(SendCommand(str)) { string RR=RecvResponse()。 //從返回的數(shù)據(jù)中截取前三位string RRCode=(0,3)。 xx 科技大學(xué)本科生畢業(yè)論文 32第 32 頁 共 52 頁//然后用這前三位與哈希表中正確的回應(yīng)碼比較if(RightCodeHT[RRCode]!=null) { flag=true。 } else {flag=false。 } } else { flag=false。 } return flag。}發(fā)送一組命令主要用于服務(wù)器驗證的重載函數(shù)為:private bool Dialog(string[] str,string errstr) { for(int i=0。i。i++) xx 科技大學(xué)本科生畢業(yè)論文 33第 33 頁 共 52 頁{ //循環(huán)調(diào)用單個的與服務(wù)器的交互過程if(!Dialog(str[i],)) { return false。 } } return true。 }8) 郵件發(fā)送程序 SendMail這是整個程序的核心部分。具體的實現(xiàn) SMTP 協(xié)議的程序正是通過它一步一步實現(xiàn)并最終實現(xiàn)發(fā)送簡單郵件甚至帶附件的郵件的功能。而它的實現(xiàn)是調(diào)用以上給出的各個函數(shù)的結(jié)果。以下就簡單的通過幾個 SMTP 命令的格式來實現(xiàn)private bool SendEmail() { //連接網(wǎng)絡(luò) try { //建立一個 TCP 連接tc=new TcpClient(mailserver,mailserverport)。 xx 科技大學(xué)本科生畢業(yè)論文 34第 34 頁 共 52 頁} catch{ (連接失敗,請確認(rèn))。return false。 } //獲取當(dāng)前流的資料ns = ()。 SMTPCodeAdd()。 //驗證網(wǎng)絡(luò)連接是否正確 if(RightCodeHT[RecvResponse().Substring(0,3)]==null) {return false。 } string[] SendBuffer。 string SendBufferstr。 //進行 SMTP 驗證 //具體的 SMTP 命令與代碼的結(jié)合if(ESmtp) { xx 科技大學(xué)本科生畢業(yè)論文 35第 35 頁 共 52 頁SendBuffer=new String[4]。 SendBuffer[0]=EHLO + mailserver + enter。 SendBuffer[1]=AUTH LOGIN + enter。 SendBuffer[2]=Base64Encode(username) + enter。 SendBuffer[3]=Base64Encode(password) + enter。 if(!Dialog(SendBuffer,SMTP 服務(wù)器驗證失敗,請核對用戶名和密碼。)) return false。 } else { SendBufferstr=HELO + mailserver + enter。 if(!Dialog(SendBufferstr,)) return false。 } SendBufferstr=MAIL FROM: + From + + enter。 if(!Dialog(SendBufferstr,發(fā)件人地址錯誤,或不能為空)) return false。 //把傳過來的收件人的地址分割然后提交給服務(wù)器string split=。string []address= (Recipient,split)。 xx 科技大學(xué)本科生畢業(yè)論文 36第 36 頁 共 52 頁SendBuffer=new string []。for(int i=0。i。i++){SendBuffer[i]=RCPT TO: +address[i]+ + enter。}if(!Dialog(SendBuffer,收件人地址有誤)) return false。 SendBufferstr=DATA + enter。 if(!Dialog(SendBufferstr,)) return false。 SendBufferstr=From: + FromName + + From + +enter。SendBufferstr += enter + . + enter。 if(!Dialog(SendBufferstr,錯誤信件信息)) return false。 SendBufferstr=QUIT + enter。 if(!Dialog(SendBufferstr,斷開連接時錯誤)) return false。 //關(guān)閉流對象()。 //關(guān)閉連接 xx 科技大學(xué)本科生畢業(yè)論文 37第 37 頁 共 52 頁()。FilePath=null。return true。 }以上即為發(fā)送不帶附件的郵件 SMTP 命令用代碼實現(xiàn)的過程。為 TCP 網(wǎng)絡(luò)服務(wù)提供客戶端連接類 TcpClient 實例對象 tc。TcpClient 類提供了一些簡單. AddExtra 類這個附加的小類只是提供一些返回當(dāng)前系統(tǒng)時間,獲取主機名,主機 IP,有關(guān)幫助等小的功能,在此僅對幫助信息中的“關(guān)于”操作函數(shù)稍加說明。因為它說明了在C Sharp 中調(diào)用 Windows API 函數(shù)所需如下幾個步驟:導(dǎo)入 Windows API 所需要的包或者類using 。而調(diào)用顯示關(guān)于對話框的函數(shù) ShellAbout 還需要用到兩個命名空間如下所示using 。using 。在程序中所需的 API 函數(shù)[DllImport()]static extern int ShellAbout(IntPtr hWnd, string szApp, string xx 科技大學(xué)本科生畢業(yè)論文 38第 38 頁 共 52 頁szOtherStuff,IntPtr hIcon)。在程序中具體的使用Assembly ass=()。FileVersionInfo myVersion=( )。ShellAbout( ,郵件收發(fā)系統(tǒng),版本+ +.++. + , .Handle )。至此就完成了在 C Sharp 中調(diào)用 Windows API 函數(shù)的過程。 xx 科技大學(xué)本科生畢業(yè)論文 39第 39 頁 共 52 頁第 6 章 軟件運行時的界面 新建賬號用戶打開軟件之后,需要新建一個郵件帳號,在這個信件帳號的過程中,需要指定 SMTP 服務(wù)器,SMTP 的端口,以及用于 ESMTP 驗證的用戶名和密碼。指定這些發(fā)郵件的必須參數(shù)之后,再回到系統(tǒng)的主界面如下所示:圖 圖 新建郵件帳號界面 xx 科技大學(xué)本科生畢業(yè)論文 40第 40 頁 共 52 頁 發(fā)送不帶附件的郵件在新建帳號的過程中已經(jīng)指定了郵件地址,和帳號名稱,所以默認(rèn)的以這些參數(shù)來發(fā)送郵件。通過調(diào)用參數(shù)的不同程序會自動的調(diào)用相對應(yīng)的代碼來執(zhí)行不同的操作。發(fā)送簡單的郵件運行界面如下。圖 發(fā)送純文本郵件 發(fā)送帶附件的郵件和簡單的郵件不同之處在于多了發(fā)送附件的功能,軟件模擬 FoxMail 里面發(fā)送郵件時,在程序的下面自動顯示增添的附件的名稱,以及圖標(biāo)等信息。并且郵件支持添 xx 科技大學(xué)本科生畢業(yè)論文 41第 41 頁 共 52 頁加,刪除,排列圖標(biāo)等功能。 運行界面如圖 :圖 發(fā)送帶有附件的郵件 驗證郵件發(fā)送是否成功郵件發(fā)送出去之后,用 FoxMail 跟蹤接收之后,證明郵件和附件都可以正常接收,具體的 FoxMail 的接收界面如圖 : xx 科技大學(xué)本
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1