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

正文內容

電子郵件客戶端軟件—計算機畢業(yè)設計-資料下載頁

2025-11-22 15:45本頁面

【導讀】電子郵件在當今社會中扮演了一個很重要的角色。越來越多的人在使用它。它的人數(shù)勢必會繼續(xù)增加。雖然,現(xiàn)在已經(jīng)有很多的郵件收發(fā)軟件例如著名的FoxMail. 但是對于大多數(shù)的非專業(yè)的人來說它還是有點難度稍嫌負責。和Pop協(xié)議從底層開發(fā)了這個軟件。SMTP全稱是簡單郵件傳輸協(xié)議,它專門用來發(fā)送。Pop全稱是郵局協(xié)議,是專門用于接收郵件的。MailSend命名空間是我整個程序的核心。類中包含了一個SendMail的方法,它從底層詳細地實現(xiàn)了和服務器的交互操作。以使用不同的SMTP服務器。經(jīng)過測試,證實此軟件是一個支持多收信人,多附件的群。雖然它沒有FoxMail那么強大的功能,但是它容易掌握和使用。1.1電子郵件介紹················································································5. 1.2開發(fā)背景·····························································&#

  

【正文】 ent tc 為 TCP 網(wǎng)絡服務提供客戶端連接類 TcpClient 實例對象 tc。 TcpClient 類提供了一些簡單的方法,用于在同步阻塞模式下通過網(wǎng)絡來連接、發(fā)送和接收流數(shù)據(jù)。而實例化的過程也 是連接 SMTP 服務器的過程。它的重載方法之一的兩個參數(shù)一個為服務器名稱字符串,另一個為服務器的埠。 2) 提供用于網(wǎng)絡訪問的基礎數(shù)據(jù)流及其實例 NetworkStream ns 此類提供訪問網(wǎng)絡的基礎數(shù)據(jù)流的方法。其中最基本也是最重要的兩個方法就是 Write()和 Read()方法,至于參數(shù)不再次贅述。 3) 一維字符串數(shù)組變量 FilePath 此字符串數(shù)組主要用來存放用戶選擇的附件的絕對路徑名,并在發(fā)送帶附件的郵件時用到。 4)發(fā)送郵件所需的基本參 數(shù) 比如用于 ESMTP 等錄檢驗用的用戶名、密碼,發(fā)送郵件需要的收 信人,發(fā)信人地址以及主題等等在此不再贅述。 5. 1. 2 主要成員函數(shù)說明 1) 重載的構造函數(shù) SmtpMail() 此函數(shù)主要用于在初始化過程中,把用戶選擇的附件的路徑以參數(shù)的形式傳給 FilePath。 畢 業(yè) 設 計 說 明 書 第 XXV 頁 共 XLIV 頁 2) 添加附件的函數(shù) AddAttachment 傳給 FilePath 的路徑,通過這樣一個函數(shù)就可以循環(huán)的動態(tài)的添加到 IList接口的一個對象中了,方便以后在具體的實現(xiàn)的過程中的使用。 3) 得到上傳的附件的文件流 GetStream 由于在網(wǎng)絡中的操作都是以網(wǎng)絡流的形式來實現(xiàn)的,因此先將上傳的附件轉換成文件 流,然后再用 Write 的方法把這些附件的文件流寫入到網(wǎng)絡中,來完成發(fā)送附件的操作。具體實現(xiàn)代碼如下所示: private string GetStream(string FilePath) { //建立文件流對象 FileStr=new (FilePath,)。 byte[] by=new byte[()]。 (by,0,)。 ()。 return((by))。 } 4) 將字符串編碼為 Base64 字符串的函數(shù) Base64Encode 由于 ESMTP 的 LOGIN 認證機制是采用 Base64 編碼,當用戶發(fā)出AUTHLOGIN 的命令后,服務器返回 334 的應答碼等待用戶輸入。如果身份確認后服務器返回 235 的應答碼,否則返回失敗信息。所以要將用戶名和密 碼轉換成 Base64 編碼然后再發(fā)給服務器。此函數(shù)的作用就是把給定的字符串轉換成相應的 Base64 編碼的字符串。 5) 發(fā)送 SMTP 命令的函數(shù) SendCommand 這個函數(shù)的作用是把 SMTP 命令的字符串轉換成對應的字節(jié)型值 ( C#中規(guī)定的 Write 方法只能寫入字節(jié)型的數(shù)據(jù))然后寫入網(wǎng)絡中,如果操作成功就返回一個標志為真的布爾型變量,如果操作失敗或者發(fā)生異常就返回標志為假的布爾型變量。具體代碼如下所示: private bool SendCommand(string str) { 畢 業(yè) 設 計 說 明 書 第 XXVI 頁 共 XLIV 頁 //定義一個數(shù) 組 byte[] WriteBuffer。 //設定一個布爾類型的變量 bool state=false。 WriteBuffer = (str)。 //加入防錯機制,可以有效提高程序運行的效率和捕獲出錯信息 try { //向網(wǎng)絡中寫入數(shù)據(jù) (WriteBuffer,0,)。 state=true。 } catch(Exception ex) { //返回出錯信息 ( ())。 state=false。 } //返回標志位 return state。 } 6) 接受服務器應答的函數(shù) RecvResponse 它的作用就是從網(wǎng)絡流中讀取服務器返回的字節(jié)型的信息,將其轉換成字符串型的變量,然后將其返回,可以通過其返回值來判斷操作是否成功。具體實現(xiàn)代碼如下所示: private string RecvResponse() { int StreamSize=0。 string ReturnValue =。 畢 業(yè) 設 計 說 明 書 第 XXVII 頁 共 XLIV 頁 //定義一個字節(jié)型的數(shù)組 byte[] ReadBuffer = new byte[1024] 。 try { //從網(wǎng)絡流中讀取數(shù)據(jù),并返回讀取的個數(shù) StreamSize=(ReadBuffer,0,)。 } catch (Exception ex) { //返回異常信息 ( ())。 } if (StreamSize!=0) { //將當前讀取的信息轉換成字符串型然后返回 ReturnValue= (ReadBuffer).Substring(0,StreamSize)。 } return ReturnValue。 } 7) 重載的 函數(shù) Dialog 它們的作用是與服務器交互,發(fā)送命令并接收回應。不同的是參數(shù)是字符串類 型的那個函數(shù),每次發(fā)送一條命令,并接受服務器的響應,根據(jù)響應的信息來判斷交互的結果是否成功。而參數(shù)是字符串數(shù)組的函數(shù)每次發(fā)送的是一組命令,用于和服務器的交互,這個函數(shù)主要是用于 ESMTP 服務器的驗證的功能,因為驗證的過程是一個等待然后又輸入的過程,因此將他們放在一個數(shù)組中有利于理解和操作。而他們的實現(xiàn)主要是通過調用上面的發(fā)送 SMTP 命令函數(shù)SendCommand 以及接受 SMTP 服務器響應的函數(shù) RecvResponse 來實現(xiàn)的。具體的代碼如下所示: private bool Dialog(string str,string errstr) 畢 業(yè) 設 計 說 明 書 第 XXVIII 頁 共 XLIV 頁 { bool flag=false。 if(str==null||()==) { flag=true。 } if(SendCommand(str)) { string RR=RecvResponse()。 //從返回的數(shù)據(jù)中截取前三位 string RRCode=(0,3)。 //然后用這前三位與哈希表中正確的回應碼比較 if(RightCodeHT[RRCode]!=null) { flag=true。 } else { flag=false。 } } else { flag=false。 } return flag。 } 發(fā)送一組命令主要用于服務器驗證的重載函數(shù)為: private bool Dialog(string[] str,string errstr) { 畢 業(yè) 設 計 說 明 書 第 XXIX 頁 共 XLIV 頁 for(int i=0。i。i++) { //循環(huán)調用單個的與服務器的交互過程 if(!Dialog(str[i],)) { return false。 } } return true。 } 8) 郵件發(fā)送程序 SendMail 這是整個程序的核心部分。具體的實現(xiàn) SMTP 協(xié)議的程序正是通過它一步一步實現(xiàn)并最終實現(xiàn)發(fā)送簡單郵件甚至帶附件的郵件的功能。 而它的實現(xiàn)是調用以上給出的各個函數(shù)的結果。 以下就簡單的通過幾個 SMTP 命 令的格式來實現(xiàn) private bool SendEmail() { //連接網(wǎng)絡 try { //建立一個 TCP 連接 tc=new TcpClient(mailserver,mailserverport)。 } catch { (連接失敗 ,請確認 )。 return false。 } //獲取當前流的資料 ns = ()。 SMTPCodeAdd()。 畢 業(yè) 設 計 說 明 書 第 XXX 頁 共 XLIV 頁 //驗證網(wǎng)絡連接是否正確 if(RightCodeHT[RecvResponse().Substring(0,3)]==null) { return false。 } string[] SendBuffer。 string SendBufferstr。 //進行 SMTP 驗證 //具體的 SMTP 命令與代碼的結合 if(ESmtp) { 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 服務器驗證失敗,請核對用戶名和密碼。 )) return false。 } else { SendBufferstr=HELO + mailserver + enter。 if(!Dialog(SendBufferstr,)) return false。 } SendBufferstr=MAIL FROM: + From + + enter。 if(!Dialog(SendBufferstr,發(fā)件人地址錯誤,或不能為空 )) return false。 //把傳過來的收件人的地址分割然后提交給服務器 string split=。 畢 業(yè) 設 計 說 明 書 第 XXXI 頁 共 XLIV 頁 string []address= (Recipient,split)。 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。 //關閉流對象 ()。 //關閉連接 ()。 FilePath=null。 return true。 } 以上即為發(fā)送不帶附件的郵件 SMTP 命令用代碼實現(xiàn)的過程。 5. 2 AddExtra 類 這個附加的小類只是提供一些返回當前系統(tǒng)時間,獲取主機名,主機 IP,有關幫助等小的功能,在此僅對幫助信息中的“關于”操作函數(shù)稍加說明。因為畢 業(yè) 設 計 說 明 書 第 XXXII 頁 共 XLIV 頁 它說明了在 C Sharp 中調用 Windows API 函數(shù)所需如下幾個步驟: 5. 2. 1 調用 Windows API 所需的命名空間 using 。 而調用顯示關于對話框的函數(shù) ShellAbout 還需要用到兩個命名空間如下所示 using 。 using 。 5. 2. 2 在程序中聲明所需的 API 函數(shù) [DllImport()] static extern int ShellAbout(IntPtr hWnd, string szApp, string szOtherStuff, IntPtr hIcon)。 5. 2. 3 在程序中具體的使用 Assembly ass=()。 FileVersionInfo myVersion=( )。 ShellAbout( ,郵件收發(fā)系統(tǒng) ,版本 + +.++. + , .Handle )。 至此就完成了在 C Sharp 中調用 Windows API 函數(shù)的過程。 畢 業(yè) 設 計 說 明 書 第 XXXIII 頁 共 XLIV 頁 6 軟件運行時的界面 6. 1 新建郵件帳 號 用戶打開軟件之后,需要新建一個郵件帳號,在這個信件帳號的過程中,需要指定 SMTP 服務器, SMTP 的端口,以及用于 ESMTP 驗證的用戶名和密碼。指定這些發(fā)郵件的必須參數(shù)之后,再回到系統(tǒng)的主界面如下所示: 圖 新建郵件帳號界面 6. 2 發(fā)送郵件界面 6. 2. 1 發(fā)送不帶附件的郵件 在新建帳號的過程中已經(jīng)指定了郵件地址,和帳號名稱,所以默認的以這些參數(shù)來發(fā)送郵件。通過調用參數(shù)的不同程序會自動的調用相對應的代碼來執(zhí)行不同的操作。發(fā)送簡單的郵件運行界面如下。 畢 業(yè) 設 計 說 明 書 第 XXXIV 頁 共 XLIV 頁 圖 發(fā)送純文本郵件 6. 2. 2 發(fā)送帶附件的郵件 和簡單的郵件不同之處在于多了發(fā)送附件的功能,軟件模擬 FoxMail 里面發(fā)送郵件時,在程序的下面自動顯示增添的附件的名稱,以及圖標等信息。并且郵件支持添加,刪除,排列圖標等功能。 運行界面如下所示: 圖 發(fā)送帶有附件的郵件 畢 業(yè) 設 計 說 明 書 第 XXXV 頁 共 XLIV 頁 6. 3 驗證郵件發(fā)送是否成功 郵件發(fā)送出去之后,用 FoxMail 跟蹤接收之后,證明郵件和附件都可以正常接收,具體的 FoxMail 的接收界面如下所示: 圖 驗證發(fā)送的郵件是否成功 畢 業(yè) 設 計 說 明 書 第 XXXVI 頁 共 XLIV 頁 7 系統(tǒng)測試 我個人做的是這個軟件收發(fā)系 統(tǒng)的一個最基本也是最主要的功能之一:發(fā)送郵件。 所以主要的測試也是圍繞發(fā)送郵件展開的,具體的可以分為以下幾個方面。 7. 1 同一 SMTP 服務器 發(fā)送郵件的測試 這個方面的測試測的是,用戶登錄一個服務器(測試中用的是 163 的 SMTP服務器)來發(fā)送一封郵件的測試。而這個測試又可以分為以下兩個方面: 7. 1. 1 同一服務器,發(fā)送一封純文本郵件的測試 1) 發(fā)送一封文本郵件給一個收信人 測
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1