c網(wǎng)絡(luò)應(yīng)用高級編程第5章SMTP與POP3應(yīng)用編程.ppt_第1頁
c網(wǎng)絡(luò)應(yīng)用高級編程第5章SMTP與POP3應(yīng)用編程.ppt_第2頁
c網(wǎng)絡(luò)應(yīng)用高級編程第5章SMTP與POP3應(yīng)用編程.ppt_第3頁
c網(wǎng)絡(luò)應(yīng)用高級編程第5章SMTP與POP3應(yīng)用編程.ppt_第4頁
c網(wǎng)絡(luò)應(yīng)用高級編程第5章SMTP與POP3應(yīng)用編程.ppt_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第5章,SMTP和POP3的應(yīng)用程序設(shè)計,5.1通過應(yīng)用程序發(fā)送電子郵件,5.2通過同步TCP接收電子郵件,電子郵件由SMTP服務(wù)器發(fā)送,SMTP是英語簡單郵件傳輸協(xié)議的縮寫,意思是簡單郵件傳輸協(xié)議,默認(rèn)端口為25。使用SMTP協(xié)議發(fā)送郵件有兩種形式:1)客戶端可以匿名發(fā)送郵件,無需客戶端驗(yàn)證,這是一般的SMTP協(xié)議;2)客戶端必須提供用戶名和密碼,這稱為ESMTP協(xié)議或擴(kuò)展SMTP。3)除了是否需要身份驗(yàn)證之外,ESMTP和SMTP的區(qū)別是相同的。為了避免或減少垃圾郵件,目前大多數(shù)SMTP郵件服務(wù)器通常使用用戶名和密碼認(rèn)證。5.1通過應(yīng)用程序發(fā)送電子郵件。在SMTP協(xié)議中,電子郵件由三部分組

2、成:信封、郵件頭和郵件體。1)信封信封包括發(fā)件人的電子郵件地址和收件人的電子郵件地址,由兩個SMTP命令指示。來自:的郵件,告訴SMTP服務(wù)器發(fā)件人的地址。RCPT轉(zhuǎn):告訴SMTP服務(wù)器的收件人地址。5.1通過應(yīng)用程序發(fā)送電子郵件(續(xù)),5.1通過應(yīng)用程序發(fā)送電子郵件(續(xù)),2)標(biāo)題中的常用命令:FROM:表示郵件發(fā)送者是誰。收件人:指明誰是郵件收件人。主題:指示消息的主題。日期:指示發(fā)送電子郵件的時間?;貜?fù):表示郵件的回復(fù)地址。內(nèi)容類型:指示哪些類型的消息包含文本、超文本和附件。x-優(yōu)先級:表示郵件的發(fā)送優(yōu)先級。MIME-Version:MIME表示多用途互聯(lián)網(wǎng)郵件擴(kuò)展,即多用途互聯(lián)網(wǎng)郵件擴(kuò)

3、展標(biāo)準(zhǔn),它定義了消息、附件和其他傳輸內(nèi)容的格式。5.1通過應(yīng)用程序發(fā)送電子郵件(續(xù)),3)正文是電子郵件的內(nèi)容。標(biāo)題以空行結(jié)束,后面是正文。4)郵件的結(jié)尾符號以“.”結(jié)尾。5.1通過應(yīng)用程序發(fā)送電子郵件(續(xù))。對于在沒有專用郵件服務(wù)器的情況下運(yùn)行的大多數(shù)客戶端程序,必須提供用戶名和密碼才能向SMTP服務(wù)器發(fā)送電子郵件,然后在服務(wù)器成功通過身份驗(yàn)證后發(fā)送或接收電子郵件。因此,要在應(yīng)用程序中發(fā)送郵件,您需要使用以下類:1)System.Net命名空間下的網(wǎng)絡(luò)憑據(jù)類,用于提供客戶端身份驗(yàn)證機(jī)制的憑據(jù)。其中包括標(biāo)準(zhǔn)的互聯(lián)網(wǎng)身份驗(yàn)證方法(基本、簡單、協(xié)商、NTLM和Kerberos身份驗(yàn)證)和可以創(chuàng)建的

4、自定義方法。在郵件發(fā)送中,我們需要使用這個類來提供SMTP服務(wù)器所需的用戶名和密碼。用法是:網(wǎng)絡(luò)憑據(jù)我的憑據(jù)=新的網(wǎng)絡(luò)憑據(jù)(發(fā)件人電子郵件地址,密碼);5.1通過應(yīng)用程序發(fā)送電子郵件(續(xù)),2)系統(tǒng)下的MailAddress類。net.mail命名空間,用于提供發(fā)件人和收件人的郵件地址。常見的形式是:郵件地址從=新郵件地址;郵件地址到=新郵件地址;5.1通過應(yīng)用程序發(fā)送電子郵件(續(xù)),3)系統(tǒng)下的郵件類。net.mail命名空間,用于提供郵件信息,包括主題、內(nèi)容、附件、信息類型等。常見的形式是:郵件消息=新郵件消息(發(fā)件人、收件人);信息。主題=主題。信息。主題編碼=系統(tǒng)。文本。編碼。UTF8

5、;信息。正文=消息內(nèi)容;信息。身體編碼=系統(tǒng)。文本。編碼。UTF8;5.1通過應(yīng)用程序發(fā)送電子郵件(續(xù)),4)系統(tǒng)下的附件類。net.mail命名空間,用于提供附件對象,常用形式是:附件附件文件=新附件(文件名);信息。附件。添加(附件文件);5) SmtpClient類該類用于發(fā)送郵件,常用形式是:SmtpClient client=新的SmtpClient(郵件服務(wù)器地址);客戶。發(fā)送(消息);利用同步傳輸控制協(xié)議接收電子郵件,有兩種協(xié)議用于發(fā)送和接收電子郵件,一種是傳輸控制協(xié)議,用于發(fā)送和接收數(shù)據(jù);另一個是POP3協(xié)議,用于解析傳輸?shù)拿?。電子郵件主要是通過郵局協(xié)議接收的,現(xiàn)在郵局協(xié)議通

6、常被用作POP3,默認(rèn)端口為110。通過POP3協(xié)議,登錄服務(wù)器后,客戶端可以刪除或下載自己的郵件。下載后,電子郵件客戶端軟件可以在本地處理郵件。1.POP3客戶端軟件的工作原理是在閱讀郵件之前需要與服務(wù)器建立TCP連接。連接成功后,POP3服務(wù)器將向客戶端發(fā)送確認(rèn)消息,客戶端將等待服務(wù)器的響應(yīng),處理收到的信息,然后發(fā)送下一個命令,并重復(fù)多次,直到連接終止。這個過程經(jīng)歷三種狀態(tài):授權(quán)、交易和更新。5.2使用同步傳輸控制協(xié)議接收電子郵件(續(xù)),2.2中的命令。POP3協(xié)議,每個命令由兩部分組成:命令和參數(shù),每個命令以回車結(jié)束。命令和參數(shù)用空格隔開。由POP3服務(wù)器發(fā)回的響應(yīng)消息包括一個狀態(tài)代碼和

7、一個命令,隨后可能會有附加信息。所有響應(yīng)也以回車結(jié)束。有兩個狀態(tài)代碼:“正常”和“失敗”(-ERR)。3。3 .具體流程。POP3協(xié)議假設(shè)C代表客戶端,S代表服務(wù)器。1)授權(quán)客戶端首先與POP3服務(wù)器建立TCP連接,服務(wù)器收到后發(fā)送單行確認(rèn)消息。此時,POP3會話進(jìn)入授權(quán)狀態(tài)。在授權(quán)狀態(tài)下,客戶需要將用戶名和密碼發(fā)送到服務(wù)器進(jìn)行確認(rèn)。具體命令如下:5.2使用同步傳輸控制協(xié)議接收電子郵件(續(xù))并發(fā)送用戶名。語法形式:USER函數(shù):將客戶的用戶名發(fā)送到服務(wù)器。服務(wù)器返回:確定正確的用戶名;-ERR錯誤的用戶名。示例:c:用戶s:好的,歡迎使用此服務(wù)器。用戶名確認(rèn)成功后,您需要輸入密碼。語法形式:P

8、ASS函數(shù):將客戶的密碼發(fā)送到服務(wù)器。服務(wù)器返回:確定正確的用戶名;-確定用戶名不正確。示例:c: pass * * * * * s: ok我的名字登錄在19:04,5.2使用同步的TCP接收電子郵件(續(xù)),2)操作狀態(tài)授權(quán)成功后,POP3會話將進(jìn)入操作狀態(tài),客戶可以執(zhí)行POP3命令來執(zhí)行相應(yīng)的操作。對于每個命令,服務(wù)器都會返回一條應(yīng)答消息。下列命令用于操作status:STAT命令語法:STAT函數(shù):從服務(wù)器獲取消息總數(shù)和字節(jié)總數(shù)。服務(wù)器返回:消息總數(shù)和字節(jié)總數(shù)。示例:c: stats: ok 2 320,5.2使用同步TCP接收電子郵件(續(xù)),LIST命令的語法形式:LIST函數(shù):從服務(wù)獲

9、取電子郵件的列表和大小。服務(wù)器返回:列出郵件列表和大小。示例:c:list s:ok 2消息(320個八位字節(jié))s: 1 120s: 2 200s:RETR命令語法形式:retr函數(shù):從服務(wù)器獲取消息。服務(wù)器返回:確定成功;-ERR錯誤。示例:c: retr1s: ok 120八位字節(jié):s:請注意,“”這里是分開送的。5.2通過同步傳輸控制協(xié)議接收電子郵件(續(xù)),DELE命令的語法形式:DELE函數(shù):服務(wù)器將電子郵件標(biāo)記為刪除,然后在執(zhí)行QUIT命令時將其真正刪除。服務(wù)器返回:確定成功;-ERR錯誤。示例:c: dele1s: ok1deleted,3)更新狀態(tài)當(dāng)客戶在操作狀態(tài)下發(fā)送QUIT命

10、令時,會話進(jìn)入更新狀態(tài)。退出命令的語法形式:退出功能:關(guān)閉與服務(wù)器的連接。5.2使用同步傳輸控制協(xié)議接收電子郵件(續(xù)),服務(wù)器返回:確定;-呃.示例:c:退出s:好的,然后服務(wù)器自動斷開與客戶端的TCP連接。郵件接收和處理在這個例子中,只需要編寫客戶端程序,而不是服務(wù)器程序就可以正常運(yùn)行。我們主要關(guān)心的是如何使用同步的TCP來發(fā)送和接收數(shù)據(jù)。部分代碼,5.2使用同步TCP接收電子郵件(續(xù)),建立連接int index=textbox user . text . index of();/大多數(shù)pop3服務(wù)器都以pop3作為前綴。所以這里只獲得這種服務(wù)器。/這個示例沒有以pop3作為前綴。未被處理

11、。字符串POP3服務(wù)器=POP3。textboxuser。text.substring(索引1);5.2通過使用同步TCP接收電子郵件(續(xù)),/與POP3服務(wù)器建立連接,并使用默認(rèn)端口110 TCP客戶端=新的TCP客戶端(POP3服務(wù)器,110);ListBoxStatus。項(xiàng)目。添加(與pop3服務(wù)器的連接成功);/獲取Networkstream對象,通過已建立的連接發(fā)送和接收數(shù)據(jù)。network stream=TCP client . getstream();/獲取讀取對象,并查找字節(jié)順序標(biāo)記,以防止顯示亂碼Sr=新流讀取器(網(wǎng)絡(luò)流);/獲取寫對象SW=新流寫入器(網(wǎng)絡(luò)流);/如果從服務(wù)

12、器返回(readdatafromserver ()=null),則讀取連接信息;5.2使用同步TCP接收電子郵件(續(xù)),/將用戶名發(fā)送到服務(wù)器,如果(將數(shù)據(jù)發(fā)送到服務(wù)器(用戶textbox user . text)=false)返回,則請求確認(rèn);如果(ReadDataFromServer()=null)返回;/如果返回(向服務(wù)器發(fā)送數(shù)據(jù)(passtextbox password . text)=false,則向服務(wù)器發(fā)送密碼并請求確認(rèn);如果(ReadDataFromServer()=null)返回;/向服務(wù)器發(fā)送STAT命令,請求獲取郵件總數(shù)和總字節(jié)數(shù),如果(發(fā)送數(shù)據(jù)到服務(wù)器(列表)=false)返回;如果(str=ReadDataRomserver()=null)返回;5.2使用同步傳輸控制協(xié)議接收電子郵件(續(xù)),從網(wǎng)絡(luò)流中讀取服務(wù)器發(fā)回的信息

溫馨提示

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

評論

0/150

提交評論