




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第5章 SMTP與POP3應(yīng)用編程,5.1 通過應(yīng)用程序發(fā)送電子郵件 5.2 利用同步TCP接收電子郵件,電子郵件是通過SMTP服務(wù)器進行發(fā)送的,SMTP是英文Simple Mail Transfer Protocol的縮寫,意為簡單郵件傳輸協(xié)議,默認端口為25。使用SMTP協(xié)議發(fā)送郵件時,有兩種形式: 1) 客戶端可以使用匿名方式發(fā)送郵件,不使用客戶端認證,這種方式即是一般的SMTP協(xié)議 2) 客戶端必須提供用戶名和密碼,這種方式稱為ESMTP協(xié)議,即Extended SMTP,或者叫擴展SMTP。 。 3) ESMTP與SMTP的區(qū)別除了是否需要認證以外,其他均相同。為了避免或者減少垃圾郵
2、件,目前大部分SMTP郵件服務(wù)器一般均采用用戶名密碼認證的方式。,5.1 通過應(yīng)用程序發(fā)送電子郵件,在SMTP協(xié)議中,電子郵件由三部分組成,信封、首部和正文。 1)信封 信封包括發(fā)信人的郵件地址和接收人的郵件地址,用兩條SMTP命令指明。 MAIL FROM:,告訴SMTP服務(wù)器發(fā)信人的地址。 RCPT TO:,告訴SMTP服務(wù)器收信人地址。,5.1 通過應(yīng)用程序發(fā)送電子郵件(續(xù)),5.1 通過應(yīng)用程序發(fā)送電子郵件(續(xù)),2)首部 首部中常用命令: FROM:,表明郵件發(fā)送者是誰。 TO:,表明郵件接收者是誰。 SUBJECT:,表明郵件的主題。 DATE:,表明發(fā)郵件的時間。 REPLY-T
3、O:,表明郵件的回復(fù)地址。 Content-Type:,表明郵件包含文本、HTML超文本和附件的哪些類型。 X-Priority:,表明郵件的發(fā)送優(yōu)先級。 MIME-Version:,MIME的意思是Multipurpose Internet Mail Extensions,即多用途Internet郵件擴展標(biāo)準,它對傳輸內(nèi)容的消息、附件及其他的內(nèi)容定義了格式。,5.1 通過應(yīng)用程序發(fā)送電子郵件(續(xù)),3)正文 正文是郵件的內(nèi)容。首部以一個空行結(jié)束,再下面就是正文部分。 4) 結(jié)束符號 郵件以“.”結(jié)束。,5.1 通過應(yīng)用程序發(fā)送電子郵件(續(xù)),對于運行在沒有專用郵件服務(wù)器的大多數(shù)客戶程序而言,
4、向SMTP服務(wù)器發(fā)送郵件需要提供用戶名和密碼,服務(wù)器驗證成功后,才能進行發(fā)送或接收。因此在應(yīng)用程序中發(fā)送郵件,需要使用下面幾個類: 1) System.Net命名空間下的NetworkCredential類 該類用于提供客戶端身份驗證機制的憑據(jù)。其中包括標(biāo)準Internet身份驗證方法(基本、簡要、協(xié)商、NTLM和Kerberos身份驗證)以及可以創(chuàng)建的自定義方法。在郵件發(fā)送中,我們需要使用這個類提供SMTP服務(wù)器需要的用戶名和密碼,用法為: NetworkCredential myCredentials = new NetworkCredential(發(fā)件人郵件地址, 密碼);,5.1 通過
5、應(yīng)用程序發(fā)送電子郵件(續(xù)),2) System.Net.Mail命名空間下的MailAddress類 該類用于提供發(fā)件人和收件人的郵件地址,常用形式為: MailAddress from = new MailAddress(發(fā)件人郵件地址); MailAddress to = new MailAddress(收件人郵件地址);,5.1 通過應(yīng)用程序發(fā)送電子郵件(續(xù)),3) System.Net.Mail命名空間下的MailMessage類 該類用于提供郵件的信息,包括主題、內(nèi)容、附件、信息類型等,常用形式為: MailMessage message = new MailMessage(from
6、, to); message.Subject = 主題; message.SubjectEncoding = System.Text.Encoding.UTF8; message.Body = 郵件內(nèi)容; message.BodyEncoding = System.Text.Encoding.UTF8;,5.1 通過應(yīng)用程序發(fā)送電子郵件(續(xù)),4) System.Net.Mail命名空間下的Attachment類 該類用于提供附件對象,常用形式為: Attachment attachFile = new Attachment(文件名); message.Attachments.Add(atta
7、chFile); 5) SmtpClient類 該類用于發(fā)送郵件,常用形式為: SmtpClient client = new SmtpClient(郵件服務(wù)器地址); client.Send(message);,5.2 利用同步TCP接收電子郵件,收發(fā)郵件使用了兩種協(xié)議,一種是TCP協(xié)議,用于收發(fā)數(shù)據(jù);另一種是POP3協(xié)議,用于解析傳送的命令。 接收電子郵件主要是利用POP(Post Office Protocol)協(xié)議,現(xiàn)在常用的是第三版,簡稱為POP3,默認端口為110。 通過POP3協(xié)議,客戶機登錄到服務(wù)器后,可以對自己的郵件進行刪除或下載,下載后,電子郵件客戶端軟件就可以在本地對郵件
8、進行處理。 1. POP3工作原理 客戶端軟件讀取郵件之前,需要事先與服務(wù)器建立TCP連接。連接成功后,POP3服務(wù)器會向該客戶端發(fā)送確認消息,客戶端等待服務(wù)器響應(yīng),并處理接收的信息,然后再接著發(fā)送下一個命令,如此往復(fù)多次,一直持續(xù)到連接終止。 這個過程經(jīng)歷了三個狀態(tài):授權(quán)狀態(tài)(AUTHORIZATION)、操作狀態(tài)(TRANSACTION)和更新狀態(tài)(UPDATE)。,5.2 利用同步TCP接收電子郵件(續(xù)),2.POP3協(xié)議中的命令 每條命令均由命令和參數(shù)兩大部分組成,而且每條命令都以回車換行結(jié)束。命令和參數(shù)之間由空格間隔。 POP3服務(wù)器回送的響應(yīng)信息由一個狀態(tài)碼和一個可能跟有附加信息的
9、命令組成。所有響應(yīng)也以回車換行結(jié)束。狀態(tài)碼有兩種:“確定”(“+OK”)和“失敗”(“-ERR”)。 3.POP3協(xié)議工作的具體過程 假設(shè)用C表示客戶端(Client),S表示服務(wù)器端(Server)。 1) 授權(quán)狀態(tài) 客戶端首先與POP3服務(wù)器建立TCP連接,服務(wù)器接收后發(fā)送一個單行的確認信息。此時POP3會話就進入了授權(quán)狀態(tài)。在授權(quán)狀態(tài),客戶需要向服務(wù)器發(fā)送用戶名和密碼進行確認,具體命令如下:,5.2 利用同步TCP接收電子郵件(續(xù)),發(fā)送用戶名。 語法形式:USER 功能:將客戶的用戶名發(fā)送到服務(wù)器。 服務(wù)器返回:+OK正確的用戶名;-ERR錯誤的用戶名。 示例:C:USER S:+OK
10、 welcome on this server. 用戶名確認成功后,需要輸入密碼。 語法形式:PASS 功能:將客戶的密碼發(fā)送給服務(wù)器。 服務(wù)器返回:+OK正確的用戶名;-OK錯誤的用戶名。 示例:C:PASS * S:+OK myname logged in at 19:04,5.2 利用同步TCP接收電子郵件(續(xù)),2) 操作狀態(tài) 授權(quán)成功后, POP3會話將進入操作狀態(tài),客戶就可以執(zhí)行POP3命令進行相應(yīng)的操作。對于每個命令,服務(wù)器都會返回應(yīng)答信息。下面是在操作狀態(tài)中使用的命令: STAT命令 語法形式:STAT 功能:從服務(wù)器中獲郵件總數(shù)和總字節(jié)數(shù)。 服務(wù)器返回:郵件總數(shù)和總字節(jié)數(shù)。
11、示例:C:STAT S:+OK 2 320 LIST命令 語法形式:LIST 功能:從服務(wù)中獲得郵件列表和大小。,5.2 利用同步TCP接收電子郵件(續(xù)),服務(wù)器返回:列出郵件列表和大小。 示例:C:LIST S:+OK 2 messages (320 octets) S:1 120 S:2 200 S: . RETR命令 語法形式:RETR 功能:從服務(wù)器中獲得一個郵件。 服務(wù)器返回:+OK成功;-ERR錯誤。 示例:C: RETR 1 S:+OK 120 octets S: S: . 注意,這里的“.”是單獨發(fā)送的。,5.2 利用同步TCP接收電子郵件(續(xù)),DELE命令 語法形式:DEL
12、E 功能:服務(wù)器將郵件標(biāo)記為刪除,當(dāng)執(zhí)行QUIT命令時才真正刪除。 服務(wù)器返回:+OK成功;-ERR錯誤。 示例:C:DELE 1 S:+OK 1 Deleted 3)更新狀態(tài) 當(dāng)客戶在操作狀態(tài)下發(fā)送QUIT命令后,會話進入更新狀態(tài)。 QUIT命令 語法形式:QUIT 功能:關(guān)閉與服務(wù)器的連接。,5.2 利用同步TCP接收電子郵件(續(xù)),服務(wù)器返回:+OK;-ERR。 示例:C:QUIT S:+OK 然后服務(wù)器自動斷開與該客戶端的TCP連接。 2.郵件接收處理 這個例子中只需要編寫客戶端程序,而不需要編寫服務(wù)器端程序即可正常運行。我們重點關(guān)心的是如何利用同步TCP發(fā)送和接收數(shù)據(jù)。 部分代碼,5
13、.2 利用同步TCP接收電子郵件(續(xù)),建立連接 int index = textBoxUser.Text.IndexOf(); /大部分pop3服務(wù)器都加前綴pop3.,這里僅獲取這種服務(wù)器 /對不以pop3.為前綴的這個例子未進行處理 string pop3Server = pop3. + textBoxUser.Text.Substring(index + 1);,5.2 利用同步TCP接收電子郵件(續(xù)),/建立與POP3服務(wù)器的連接,使用默認端口110 tcpClient = new TcpClient(pop3Server, 110); listBoxStatus.Items.Add
14、(與pop3服務(wù)器連接成功); /獲取 Networkstream對象,以便通過建立好的連接發(fā)送和接收數(shù)據(jù) networkStream = tcpClient.GetStream(); /得到讀對象,并查找字節(jié)順序標(biāo)記,防止顯示亂碼 sr = new StreamReader(networkStream); /得到寫對象 sw = new StreamWriter(networkStream); /讀取服務(wù)器回送的連接信息 if (ReadDataFromServer() = null) return;,5.2 利用同步TCP接收電子郵件(續(xù)),/向服務(wù)器發(fā)送用戶名,請求確認 if (Send
15、DataToServer(USER + textBoxUser.Text) = false) return; if (ReadDataFromServer() = null) return; /向服務(wù)器發(fā)送密碼,請求確認 if (SendDataToServer(PASS + textBoxPassword.Text) = false) return; if (ReadDataFromServer() = null) return; /向服務(wù)器發(fā)送STAT命令,請求獲取郵件總數(shù)和總字節(jié)數(shù) if (SendDataToServer(LIST) = false) return; if (str = ReadDataFromServer() = null) return; 從網(wǎng)絡(luò)流中讀取服務(wù)器回送的信息,寫入信息列表框 string str = null;,5.2 利用同步TCP接收
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鹽城市公積金管理辦法
- 定興縣公租房管理辦法
- 庫存物品采購管理辦法
- 肝腎虧虛中醫(yī)辨證課件
- 東莞小學(xué)3年級數(shù)學(xué)試卷
- 恩施定向招聘數(shù)學(xué)試卷
- 固安初一期末數(shù)學(xué)試卷
- 高考必修一數(shù)學(xué)試卷
- 肌腱術(shù)后護理課件
- 德州初中數(shù)學(xué)試卷
- 防溺水安全教育課件PPT(完美版)
- 透析患者高磷血癥的控制
- 學(xué)校中層干部選拔考試教育教學(xué)管理知識試題題庫(包含:名詞解釋、簡答題、論述題、案例分析)
- 消防安裝工程監(jiān)理細則樣本
- GB/T 7551-2008稱重傳感器
- GB/T 20540.2-2006測量和控制數(shù)字數(shù)據(jù)通信工業(yè)控制系統(tǒng)用現(xiàn)場總線類型3:PROFIBUS規(guī)范第2部分:物理層規(guī)范和服務(wù)定義
- GB/T 19411-2003除濕機
- GA/T 966-2011物證的封裝要求
- FZ/T 64078-2019熔噴法非織造布
- 第3課 象外之境-中國傳統(tǒng)山水畫 說課稿- 高中美術(shù)人教版(2019)美術(shù)鑒賞
- 第2課《說和做》課件(共30張ppt) 部編版語文七年級下冊
評論
0/150
提交評論