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

正文內(nèi)容

一個smtp客戶端程序的設(shè)計與實現(xiàn)—畢業(yè)設(shè)計論文-文庫吧資料

2024-12-07 11:23本頁面
  

【正文】 附件。使用本類提供了能夠?qū)︵]件內(nèi)容進行規(guī)范化設(shè)計的操作,使用這些操作能夠得到滿足 SMTP 協(xié)議規(guī)定的電子郵件。 二、 CMailMessage 子模塊:該模塊用于表示郵件的所有內(nèi)容,如:郵件的發(fā)送者、接收者、標題、正文以及附件。如果查表成功,返回一個合適 的出錯信息;如果查表失敗,則返回未知錯誤。 8) protected static ResponseCode* GetServerResponseMessage(UINT):該方法的作用是根據(jù)傳遞進來的消息碼來返回一個與消息碼對應(yīng)的服務(wù)器消息 。該方法的參數(shù)為 CMailMessage*類型的指針,代表一個郵件對象。在 SMTP協(xié)議中規(guī)定 :郵件正文以 DATA命令開始,以“ ”標志結(jié)束,為了避免在郵件正文中,出現(xiàn)上述的結(jié)束標志,必須在發(fā)送郵件前檢測郵件,把郵件中所有的與郵件結(jié)束符號相 同的字 符替換為“ CRLF..CRLF”,來避免在郵件發(fā)送時出現(xiàn)結(jié)束位置 不明 的錯誤。如果是預(yù)期的數(shù)據(jù)那么返回 TRUE,標志發(fā)送成功;如果返回 FALSE,標志發(fā)送失敗。本方法的參數(shù) msg 應(yīng)包含就是要發(fā)送的郵件的信息,如發(fā)送的來源、目的地、郵件的題目、發(fā)送時間、正文內(nèi)容以及附件,均存儲在 msg 對象中。 6) public virtual BOOL TransmitMessgae(CMailMessage * msg):該方法的作用是根據(jù)傳遞進來的 CMailMessage 對象傳送郵件。通過該方法,可以根據(jù)SetServerProperties 方法設(shè)置的屬性,連接到指定的服務(wù)器 。 4) public UINT GetPort():獲取服務(wù)器的端口號。 3) public CString GetLastError():通過調(diào)用該方法,能夠獲取服務(wù)器返回的錯誤信息。其中 szSMTPServerName 是服務(wù)器的名稱, nPort是端口號。如果判斷正確,那么返回 TRUE;否則返回 FALSE。 成員函數(shù) 說明: 1) private BOOL GetResponse(UINT responseExpected):該方法根據(jù)獲取的 UINT 類型的參數(shù) responseExpected 來判斷所進行的操作是否正確 。 6) protected TCHAR* responseBuf:保護成員變量,用于存放服務(wù)器返回的消息。 4) private CSocket m_SMTPServer:私有成員變量,表示連接到服務(wù)器的網(wǎng)絡(luò)實體。 3) private CString m_nSMTPServerHostName:私有成員變量,表示服務(wù)器的名稱。在該軟件中該值為 25。 TRUE 表示已連接; FALSE 表示沒有進行連接。其類圖 如圖 4所示。其他模塊只需調(diào)用其接口方法,并傳遞正確的參數(shù),就可以方便的與服務(wù)器建立連接,并傳送郵件內(nèi)容。對于 SMTP的分析以及發(fā)送時發(fā)送端與接收端之間的會話,均由此類完成。 一、 CSMTP 子模塊:該模塊封裝了有關(guān)郵件發(fā)送過程的操作。按照其完成的功能進行劃分,每個工具類都可以作為一個子模塊。結(jié)構(gòu)清晰,功能相對完備,既完成了預(yù)期的需求,也學(xué)習(xí)到了有關(guān) SMTP 協(xié)議的知識。在本軟件構(gòu)過程中,定義了 CSMTP、 CMailMessage、 CMIMEMessage、 CBASE64 四個工具類,給程序使用。利用其面向?qū)ο蟮奶匦裕陂_發(fā)過程中能夠方便的向軟件添加功能。 因此,軟件采用 MFC 為應(yīng)用框架,配合 IDE 使用,能夠自動提供出一套功能有限但設(shè)計結(jié)構(gòu)清晰的標準 Windows 程序。開發(fā)者可能會花大量的時間在分析事件的流程上,而不是程序的邏輯。其類庫并且提供了大量的有關(guān)網(wǎng)絡(luò)操作 API,讓用戶能夠方便的使用并獲得所求的值。 整個工程使用 C語言實現(xiàn) 論速度而言,除開低等的匯編, C語言絕對的獨占熬頭,并且 C語言的語法簡單,構(gòu)建出的程序結(jié)構(gòu)也清晰。而且使用 JAVA 的條件是用戶必須安裝虛擬機,并且 JAVA 的執(zhí)行速度在目前來看似乎也不太被看好。如果選擇使用 JAVA 作為開發(fā)語言,并使用一種集成 IDE,如:JBUILDER。下面與流行的兩種平臺做比較并說明選擇 VC++的原因: 整個工程使用 JAVA 平臺 從誕生至今,一路走來 JAVA 可以說是一帆風順。 6) 圖形界面編程。 4) 按照 SMTP 的要求,對郵件進行封裝,生成滿足協(xié)議要求的郵件。 3) 提供 BASE64 的加密算法,能夠?qū)τ脩糨斎氲臄?shù)據(jù)進行加密。 根據(jù)以上分析,需要進行編碼的操作有: 1) 從圖形界面獲取輸入的數(shù)據(jù)的操作。 4)可以發(fā)送郵件信息(含附件)。 2)可以根據(jù)用戶輸入的數(shù)據(jù)連接服務(wù)器,并進行身份驗證。 4 SMTP 協(xié)議客戶端軟件設(shè)計與實現(xiàn) 需求分析與總體設(shè)計 功能分析 由本設(shè)計的題目可知,本設(shè)計的目的就是建立一款能夠發(fā)送郵件的客戶端軟件。目前很多的工具都自帶了幫助文檔,但微軟的 MSDN 確實作的非常出色。除非你是個只喜歡把代碼都 CO、 CO進去的時間浪費者,否則選擇選擇 VC++這樣的 IDE無疑會對你有很大的幫助。 作為一個高度集成化的 IDE, Visual C++ 不僅僅提供了對 C++語言的支持,而且能夠用來編輯一些簡單的圖片和其他信息。作為一款優(yōu)秀的集成開發(fā)環(huán)境,它提供了很多方便開發(fā)的功能。 當然它的作用不僅僅如此。在整個程序的構(gòu)建時,也是使用了這 個大名鼎鼎的 Microsoft Foundation Class 框架。目前的 C++開發(fā)陣地中,有兩套 application framework 是最為著名的,一套是 OWL,另一套是 MFC。由軟件業(yè)巨頭微軟強力推出。 軟件 開發(fā)環(huán)境 系統(tǒng)環(huán)境 本系統(tǒng)采用的工具軟件有: OS: Windows 2020 Data Center Edition IDE: Visual C++ 企業(yè)版 工具簡介 在本系統(tǒng)中,使用的開發(fā)工具為 Visual C++ 企業(yè)版。生成一個能夠向任何實現(xiàn)了 SMTP 協(xié)議的郵件服務(wù)器發(fā)送郵件的客戶端軟件,服務(wù)器端可以任意選取(實現(xiàn) SMTP 協(xié)議即可)。使用 MFC 提供的有關(guān)底層 API,不依靠提供的組件,手動分析協(xié)議的工作流程 。為了加深對 SMTP 協(xié)議的理解,全面掌握 SMTP 協(xié)議,提高動手能力和解決實際問題的能力,而 提出了該課題。 3 軟件 開發(fā)背景與環(huán)境 軟件 開發(fā)背景 作為計算機專業(yè)的學(xué)生,在課堂上學(xué)習(xí)到的僅僅是有關(guān)協(xié)議的理論知識,并沒有分析并運用協(xié)議的實際經(jīng)驗。(可以把其看成是 822 文檔的全面升級版本,當然這種說法并不準確,因為它們共同點僅僅是都對內(nèi)容格式進行說明??梢岳^續(xù)發(fā)送郵件??蛻舳税l(fā)送密碼給服務(wù)器,等待服務(wù)器的驗證結(jié)果,服務(wù)器返回235 Authentication successful 信息給客戶端。客戶端發(fā)送 BASE64 編碼后的用戶名。然后繼續(xù)發(fā)送 250 應(yīng)答碼,要求客戶端去進行身份驗證。 此時由于要進行身份驗證,那么必須使用 EHLO 而不是 HELO。 C: AUTH LOGIN S: 334 Username 的 BASE64 編碼 C: 用戶名 的 BASE64 編碼 S: 334 Password 的 BASE64 編碼 C: 密碼的 BASE64 編碼 S: 235 Authentication successful. 當客戶端發(fā)送連接請求到 服務(wù)器時,服務(wù)器返回 220 應(yīng)答碼,說明目前服務(wù)器已經(jīng)準備工作。下面給出一個簡單的例子來說明驗證的過程,其中 S代表服務(wù)器 ,C 代表客戶端: S: 220 ESMTP server ready C: EHLO S: S: 250 AUTH LOGIN PLAIN。 RFC2554 文檔: ESMTP( SMTP Service Extension for Authentication),它是對 SMTP 協(xié)議的擴展,確切來說是對于郵件傳輸中有關(guān)身份認證部分的規(guī)定。目前大多數(shù)的 SMTP 協(xié)議實現(xiàn)參考的資料都是 2821 文檔。沒有 改變?nèi)魏卧械拿睿皇呛唵蔚脑黾恿藘?nèi)容。因此, 制定 出了 一系列的相關(guān)協(xié)議 來滿足人們?nèi)找孀兓男枨?。 圖 3 SMTP協(xié)議規(guī)定的命令關(guān)鍵字 相關(guān)協(xié)議的簡單介紹 電子郵件系統(tǒng)經(jīng)過幾十年的發(fā)展,已經(jīng)形成了較為完善的技術(shù)體系。應(yīng)答碼列表如圖 2所示 。服務(wù)器會 回 復(fù)它一個正常的代碼。以下的命令是用于打 開和關(guān)閉的: HELO < SP> < domain> < CRLF> QUIT < CRLF> 在 HELLO 命令中,主機自己發(fā)送命令,此命令可以被解釋為:“你好,我是XX” 打開連接的例子: R: 220 Simple Mail Transfer Service Ready S: HELO xx R: 250 關(guān)閉聯(lián)結(jié)的例子 S: QUIT R: 221 Service closing transmission channel 從整個 SMTP 協(xié)議的工作過程來看,整個過程很類似于一對朋友的談話,首先要由客戶端的朋友先向服務(wù)器端開口說 HELO,然后服務(wù)器端回答它的話。信道正常被建立或銷毀的時候,服務(wù)器端和客戶端會分別依靠命令和應(yīng)答碼來打開或關(guān)閉信道。銷毀的命令為: QUIT。在 SMTP 中規(guī)定了建立和銷毀通道的命令。 打開與退出 想進行郵件的發(fā)送,就要有一對用于傳送信息的通道。 S:MAIL FROM: R: 250 OK S: RCPT TO: R: 250 OK S: RCPT TO: R: 550 No such user here S: RCPT TO: R: 250 OK S: DATA R: 354 Start mail input。下例表示了在一個發(fā)送操作中這些命令的使用。 上面所述的過程是一個發(fā)送操作。如果此命令被接收,接收方返回一個 250 OK 應(yīng)答。 注意:郵件內(nèi)容包括如下提示: Date , Subject , From , To 。因為郵件是在傳送通道上發(fā)送,因此必須指明郵件內(nèi)容結(jié)尾,以便應(yīng)答對話可以重新開始。 DATACRLF 如果命令被接收,接收方返回一個 354 Intermediate 應(yīng)答,并認定以下的 各行都是信件內(nèi) 容。 forwardpath>不僅包括郵件,它是主機和目的郵箱的路由表,在其中的第一個主機就是接收命令的主機。如果接收者未知,接收方會返回一個 550 Failure 應(yīng)答。 2) 過程中的第二步是發(fā)送 RCPT 命令。如果請求被接收,接收方返回一個 250 OK應(yīng)答。 MAILSPFROM:reversepathCRLF 此命令告訴接收者新的發(fā)送操作已經(jīng)開始,請復(fù)位所有狀態(tài)表和緩沖區(qū)。一系列或更多的 RCPT 命令緊跟其后,給出了接收者信息,然后是 DATA命令列出發(fā)送的郵件內(nèi)容,最后郵件內(nèi)容指示符確認操作。本節(jié)只介紹了少數(shù)幾個 SMTP 命令和代碼, 本節(jié)末尾 有詳細的命令列表和代碼列表。得到服務(wù)器的信息后,對這些信息進行分析,再繼續(xù)進行下一步操作。當指定一般的命令或應(yīng)答格式后,參數(shù)會由一些類似于語言的字符串表示出來,如 string> 或 reversepath> ,這里尖括號表示這是一種類似于語言的變量。這樣 SMTP 實現(xiàn)中就將用戶郵箱名稱保留成初始時的樣子,主機名稱對大小寫不敏感。 當同一個消息要發(fā)往不同的接收者時, SMTP 遇到了向不同接收者發(fā)送同一份數(shù)據(jù)的復(fù)制品的問題,郵件命令和應(yīng)答有一個比較奇怪的語法,應(yīng)答也有一個數(shù)字代碼。 MAIL 命令參數(shù)是回復(fù)路徑,它指定郵件從何處來;而 RCPT 命令的參數(shù)是轉(zhuǎn)發(fā)路徑的,它指定郵件向何處去。 圖 1 SMTP工作模型 SMTP 提供傳送郵件的機制,如果接收方與發(fā)送方連接在同一個傳送服務(wù)器時,郵件可以直接由發(fā)送方 主機傳送到接收方主機;或者,當兩者不在同一個傳送服務(wù)器時,通過中繼 SMTP 服務(wù)器傳送。當接收者收到全部郵件后就會收到特別的序列,如果接受者成功處理了郵件,則返回 OK 應(yīng)答。 SMTP 發(fā)送者再發(fā)出 RCPT 命令指明郵件接收者。 一旦傳送通道建立, SMTP 發(fā)送者發(fā)送 MAIL 命令指明郵件發(fā)送者。其中接收 SMTP 可以是最終接受者也可以是中間傳送者。以下就以 RFC821 文檔中規(guī)定描述有關(guān)的內(nèi)容。但基本的操作模式?jīng)]有變化,只是增加了相關(guān)的命令和格式。相關(guān)文檔也由最初的RFC821 文檔,擴展為目前的 RFC282 RFC2045- 204 RFC2554 等多個。 協(xié)議原理 從 1982 年到現(xiàn)在, SMTP 協(xié)議及其相關(guān)的協(xié)議已經(jīng)發(fā)展成一個比較完整的體系,不再是建立之初那個只能傳送文本消息的簡單協(xié)議。郵件可以通 過連接在不同 IPCE(Interprocess Communication Environment)上的進程跨網(wǎng)絡(luò)進行郵件傳送。進程可能直接和其它進程通過已知的 IPCE 通信。 SMTP 的一個重要特點是它能夠在傳送中接力傳送郵件,傳送服務(wù)提供了進程間通信環(huán)境( IPCE),此環(huán)境可以包括一個網(wǎng)絡(luò),幾個網(wǎng)絡(luò)或一個網(wǎng)絡(luò)的子網(wǎng)。主要功能就是傳送電子郵件,當我們使用郵件程
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1