




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 1C#C#網絡編程技術教程第八章電子郵件協議編程網絡編程技術教程第八章電子郵件協議編程第第8 8章章 電子郵件協議編程電子郵件協議編程 2 2學習目標學習目標了解電子郵件協議的相關基礎知識。了解電子郵件協議的相關基礎知識。掌握掌握SMTPSMTP、ESMTPESMTP協議格式及其編程方法。協議格式及其編程方法。掌握掌握POP3POP3協議格式及其編程方法。協議格式及其編程方法。掌握掌握System.Web.MailSystem.Web.Mail郵件編程。郵件編程。第第8 8章章 電子郵件協議編程電子郵件協議編程 3 3本章內容本章內容8.1 8.1 電子郵件協議概述電子郵件協議概述 8.2
2、 SMTP8.2 SMTP協議編程協議編程 8.3 ESMTP8.3 ESMTP協議編程協議編程 8.4 POP38.4 POP3協議編程協議編程 8.5 System.Web.Mail 8.5 System.Web.Mail 第第8 8章章 電子郵件協議編程電子郵件協議編程 4 48.1 8.1 電子郵件協議概述電子郵件協議概述 電子郵件是Internet上最常見的服務。電子郵件可以允許兩個或多個用戶間建立通信聯系,實現電子化的郵政通信方式。電子郵件的收取、發送等服務必須由基于電子郵件協議的電子郵件系統來實現。電子郵件系統主要由郵件服務器和郵件客戶端組成,郵件服務器又包括郵件發送處理服務器(
3、遵循SMTP)和郵件接收處理服務器(遵循POP3協議)。一般的郵件服務器(126、Yahoo、Hotmail、Sohu等)都包括這兩個功能。常見電子郵件系統組成如圖8.1所示。圖8.1 電子郵件系統組成第第8 8章章 電子郵件協議編程電子郵件協議編程 5 58.1 8.1 電子郵件協議概述電子郵件協議概述 對應于郵件服務器的兩個部分,郵件客戶端有發送郵件和接收郵件兩個功能以及其他一些輔助功能,其中發送郵件的部分遵循SMTP,接收郵件的部分遵循POP3協議。通常各個郵件服務器都提供了Web方式的郵件客戶端,用戶只需要用IE瀏覽器就可以訪問郵箱,但是Web郵件客戶端有一定的局限性,例如每次都需要打
4、開IE、進入網站,再登錄郵箱。Web郵件客戶端只能在線瀏覽郵件,在沒有網絡連接的情況下,就不能瀏覽郵件了。與電子郵件相關的協議主要有:RFC822、SMTP、POP3和IMAP4。1RFC822郵件格式 RFC822定義了SMTP、POP3、IMAP以及其他電子郵件傳輸協議所提交、傳輸的內容。RFC822定義的郵件由兩部分組成:信封和郵件內容。信封包括與傳輸、投遞郵件有關的信息。郵件內容包括標題和正文。2SMTP SMTP(Simple Transfer Protocol,簡單郵件傳輸協議)是Internet上傳輸電子郵件的標準協議,用于提交和傳送電子郵件,該協議規定了主機之間傳輸電子郵件的標
5、準交換格式和郵件在鏈路層上的傳輸機制。SMTP通常用于把電子郵件從客戶機傳輸到服務器,以及從一臺服務器傳輸到另一臺服務器。3POP3 POP3(Post Office Protocol 3,郵局協議第三版)是Internet上傳輸電子郵件的標準協議。它提供信息存儲功能,負責為用戶保存收到的電子郵件,并且從郵件服務器上下載取回這些郵件。4IMAP4 IMAP4(Internet Message Access Protocol 4,網際消息訪問協議第四版),當電子郵件客戶機軟件在筆記本計算機上允許時,IMAP4比POP3更適用。使用IMAP4時,用戶可以有選擇地下載電子郵件,甚至只是下載部分郵件。
6、因此,IMAP4要比POP3復雜。第第8 8章章 電子郵件協議編程電子郵件協議編程 6 68.2 SMTP8.2 SMTP協議編程協議編程 SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議)通常是發送E-mail的協議,該協議的默認端口是25。 SMTP服務器會主動監聽TCP端口25,郵件客戶端如果需要發送郵件,首先要建立一個TCP連接。當連接建立后,SMTP協議中規定命令并等待響應。8.2.1 郵件格式 RFC 822 Standard for ARPA Internet Text Message定義了郵件格式由郵件標題和郵件內容兩部分構成。1郵件標題一
7、般郵件的標題內容如下: Received:by ;Thu,10 July 2008 13:10:25+0800 Message-ID:0c6501b1452a$3d4c8ef0$ From:Hua Jin Date:Thu,10 July 2008 13:10:25+0800 Reply-To:Jin Hua To: Subject:c# Network Programming X-Mailer:Microsoft Outlook Express 5.50.4133.2400第第8 8章章 電子郵件協議編程電子郵件協議編程 7 78.2 SMTP8.2 SMTP協議編程協議編程 標題定義的內容
8、如下:(1)From:發件人賬號。(2)To:收件人賬號。(3)Reply-To:回復郵件的收件人賬號。(4)Subject:郵件主題。(5)Date:郵件處理日期。(6)Received:郵件服務器處理的日期,該內容由郵件服務器自行加入郵件標題中。(7)Message-ID:郵件服務器所定義的郵件序號。(8)X-Mailer:郵件工具。(9)其他:根據不同類型的郵件服務器而加入的標題內容。2郵件內容根據RFC 822的定義,郵件內容以ASCII為其文字格式。SMTP協議用于發送郵件,其默認端口為25,SMTP協議定義了字段保留字及特殊符號等,以確保郵件能在郵件服務器間成功地被傳送。RFC 8
9、22定義了SMTP字段保留字及符號。如:Reply-To:Jin Hua 其中:(1)Reply-To:字段保留字。(2)(:):保留字與內容間需要用冒號隔開。(3)(”):用戶名等置于引號之中。(4)():郵件賬號及Message-ID等置于括號內。(5)(,):當含有多個郵件賬號時,用逗號隔開。(6)():在郵件賬號中,用戶登錄名與郵件服務器的DNS名稱以連接。(7)CRLF:每一行結尾要以CRLF結束,CRLF含義如表8.1所示。第第8 8章章 電子郵件協議編程電子郵件協議編程 8 88.2 SMTP8.2 SMTP協議編程協議編程 項 目說 明ASCIIHex轉 義 字 符CR回車13
10、0X0DrLF換行100X0An第第8 8章章 電子郵件協議編程電子郵件協議編程 9 98.2 SMTP8.2 SMTP協議編程協議編程 8.2.2 SMTP信息 RFC 821 Simple Mail Transfer Protocol 定義了SMTP發送郵件的流程、格式、指令等內容。下面是客戶端發送郵件至郵件服務器及服務器響應的內容,為區別起見,每一行的開始位置加上“S:”或“C:”,代表服務器端或客戶端響應及發送信息。C:Trying to connect to host smtp:,port:25C:Connected to smtp.mail S:220 Simple Mail Tr
11、ansfer Service ReadyC:HELO S:250 Hello C:MAIL FROM:S:250 OKC:RCPT TO:S:250 OKC:DATAS:354 Start mail input;end with.C:Date:Thu,10 July 2008 13:10:25+0800C:To:C:Subject:SMTP MailC:Test SMTP mail message.C: S:250 OKC:QUITS:221 Service closing transmission channel 由此可以看出,郵件服務器端返回的信息都會加上三位數字的響應碼,來定義各信息處理
12、情況。SMTP響應碼如表8.2所示。第第8 8章章 電子郵件協議編程電子郵件協議編程 10108.2 SMTP8.2 SMTP協議編程協議編程 響 應 碼含 義211響應系統狀態214輔助信息220服務器的郵件服務已準備運作221已結束與郵件服務器的連接250系統指令正確發送(OK)251無此收件人354開始郵件內容發送,并以.表示結束421服務器無此郵件服務450郵件信箱不存在451系統指令處理錯誤452系統容量不足500未定義的系統指令501系統指令的參數錯誤502系統指令未被執行503系統指令順序錯誤504系統指令的參數未被執行550郵件信箱不存在551無此收件人552系統容量不足553
13、郵件信箱收件人名稱不存在554郵件發送處理失敗第第8 8章章 電子郵件協議編程電子郵件協議編程 11118.2 SMTP8.2 SMTP協議編程協議編程 其中,第一個及第二個數字均有其特別含義,而第三個數字為信息的序號,下面具體說明第一、二個數字的含義,分別如表8.3、表8.4所示。表8.3 SMTP響應碼第一個數字的含義編 號含 義1信息已被郵件服務器正確接受,但尚未被處理2信息已被郵件服務器正確處理完畢3信息已被郵件服務器正確接受,并正在處理中4信息處理錯誤(暫時)5信息處理錯誤(永久)表8.4 SMTP響應碼第二個數字的含義編 號含 義0語法1系統狀態與信息2與郵件服務器系統連接狀態3未
14、定義4未定義5與郵件服務器有關的信息第第8 8章章 電子郵件協議編程電子郵件協議編程 12128.2 SMTP8.2 SMTP協議編程協議編程 8.2.3 SMTP指令 SMTP指令也是由RFC821定義的,SMTP指令采用命令行形式,用ASCII碼表示,它們之間由空格間隔。命令行以結束,命令一般是四個字母,每個參數卻可長達40個字符。在帶參數的情況下,命令本身由和參數隔開;如果未帶參數可以直接和連接。郵件服務器接收到命令后會執行命令,并把執行結果返回給客戶端。SMTP指令如表8.5所示。命 令語 法 定 義描 述HELOHELO 該命令用于向服務器標識用戶身份。如果操作成功,服務器會返回代碼
15、250HELPHELP該命令用于向命令的發送者發出幫助信息MAILMAIL FROM: 該命令用于初始化郵件傳輸。如果操作成功,服務器會返回代碼250RCPTRCPT TO :該命令用于標識單個郵件接收人,如果有多個接收人,將由多個該命令指定。如果操作成功,服務器會返回代碼250DATADATA該命令是一個復雜的命令,用于設置郵件的主題、接收人、抄送列表和郵件的正文。DATA命令會初始化數據傳輸,一般在一個或多個RCPT命令后執行DATA命令RSETRSET中止郵件發送處理NOOPNOOP 令郵件服務器發送250OK的信息SENDSEND 處理郵件發送SAMLSAML Send和Mail命令要
16、求郵件內容直接發送到用戶終端上(SAML:Send And Mail)SOMLSOML Send或Mail命令要求郵件內容直接發送到用戶終端上(SOML:Send Or Mail)ARFYARFY 確認收件人E-mail地址是否正確(VRFY:Verify)EXPNEXPN 確認收件組是否正確(EXPN:Expand)QUITQUIT該命令用于結束會話,退出SMTP服務器并中斷連接。如果執行成功,會返回221,表示服務器關閉第第8 8章章 電子郵件協議編程電子郵件協議編程 13138.2 SMTP8.2 SMTP協議編程協議編程 8.2.4 SMTP流程SMTP流程也是由RFC821定義的,如
17、圖8.2所示。第第8 8章章 電子郵件協議編程電子郵件協議編程 14148.2 SMTP8.2 SMTP協議編程協議編程 8.2.4 SMTP流程(1)首先,客戶端嘗試與郵件服務器建立連接,并且等候郵件服務器返回220 Ready的信息,當客戶端收到此信息時,會發出HELO信息,以響應郵件服務器,而同時郵件服務器也會返回250 OK信息,表示雙方已建立起連接,隨后就可以開始發送郵件。(2)郵件發送是以MAIL FROM:指令開始。首先,客戶端發出MAIL FROM:的信息,其主要作用在于一旦有任何錯誤發生或郵件響應產生時,會發往此E-mail地址,若發件人的E-mail地址正確,郵件服務器會返
18、回250 OK信息,否則會返回550 No such user信息。(3)隨后客戶端會發出RCPT TO:指令,以代表收件人的E-mail地址,若收件人E-mail地址正確,郵件服務器會返回250 OK信息,否則會返回550 No such user信息。(4)隨后開始處理郵件標題及內容,客戶端會先發送出DATA指令,以告知郵件服務器將要開始發送郵件標題及內容。若正確,則郵件服務器會響應354 Start mail input的信息,隨后就可以開始發送郵件標題及內容,每行必須以結尾。(5)依次發送郵件標題及內容后,必須發送一個特殊的字符串,以代表郵件內容發送結束,此字符由回車、換行、句點、回車
19、、換行組成,即.。同樣,郵件服務器會返回250 OK信息,代表成功發送。第第8 8章章 電子郵件協議編程電子郵件協議編程 15158.2 SMTP8.2 SMTP協議編程協議編程 8.2.4 SMTP流程(6)最后,客戶端發出QUIT指令,要求結束連接,同時郵件服務器端會響應221信息,表示同意結束,則完成郵件的正常發送。 郵件客戶端最重要的兩個功能就是發送郵件和接收郵件,其中發送郵件的流程如圖8.3所示。發送郵件時,首先檢查“發件箱”目錄中的待發郵件,如果沒有待發郵件就退出執行,反之,則逐個發送郵件。發送郵件時,先創建一個TCP連接到POP3服務器,如果連接不成功也退出執行;反之,判斷SMT
20、P服務器是否需要進行身份驗證,如果不需要身份驗證,或身份驗證失敗后都退出執行,一旦身份驗證成功,則直接發送郵件,然后檢查郵件發送是否成功,如果發送不成功就退出執行,否則關閉連接,更新數據庫和界面,獲取下一個要發送的郵件。循環執行上面的步驟,直到所有郵件都發送完后退出。 接收郵件時首先要創建一個TCP連接到POP3服務器。如果連接不成功就退出執行,連接成功后再發送USER和PASS命令進行身份驗證,身份驗證通過后再通過STAT命令獲得要接收的郵件數,當郵件數大于0時,通過RETR命令逐個接收郵件。接收郵件完畢后,檢查賬號中是否保留服務器上郵件的設置,如果是,就不作任何操作,否則從服務器上刪除已經
21、接收的郵件。最后關閉連接,更新UI界面和數據庫,完成郵件接收,如圖8.4所示。 第第8 8章章 電子郵件協議編程電子郵件協議編程 16168.2 SMTP8.2 SMTP協議編程協議編程 8.2.4 SMTP流程 第第8 8章章 電子郵件協議編程電子郵件協議編程 17178.2 SMTP8.2 SMTP協議編程協議編程 8.2.5 SMTP協議編程方法 SMTP協議編程方法有兩種,分別是由客戶端Socket類和客戶端TcpClient類實現SMTP協議編程。下面分別作簡要說明,具體實例詳見ESMTP協議編程實例。1客戶端Socket類實現SMTP協議編程以Socket類通過SMTP協議發送郵件
22、,需要根據圖8.2所示的SMTP流程,建立與郵件服務器的連接,并按順序發送下列格式的內容至服務器,就可完成SMTP郵件發送。HELOrnMALL FROM:rnRCPT TO:rnDATArnrnrn. rnQUITrn注意:每一行需要以CRLF( rn )結尾;SMTP發送郵件服務器的默認端口是25。第第8 8章章 電子郵件協議編程電子郵件協議編程 18188.2 SMTP8.2 SMTP協議編程協議編程 8.2.5 SMTP協議編程方法 2客戶端TcpClient類實現SMTP協議編程圖8.5 客戶端實現SMTP協議編程流程圖使用TcpClient類編寫SMTP客戶端應用程序的流程如圖8.
23、5所示。圖8.5 客戶端實現SMTP協議編程流程圖第第8 8章章 電子郵件協議編程電子郵件協議編程 19198.2 SMTP8.2 SMTP協議編程協議編程 8.2.5 SMTP協議編程方法 (1)首先客戶端以TcpClient類與SMTP郵件服務器建立Socket連接,可使用TcpClient類的Connect方法建立客戶端與服務器端的連接,其方法如下。 public void Connect ( IPEndPoint remoteEP); public void Connect (IPAddress address,int port); public void Connect (strin
24、g hostname,int port);(2)建立客戶端與服務器端數據發送接收的輸入/輸出數據流:所建立的TcpClient對象代表客戶端與服務器端的連接,可通過TcpClient類的GetStream方法取得客戶端的輸入、輸出數據流,此函數原型如下:Public NetWorkStream GetStream ( );(3)然后以NetworkStream類的Write方法依序從客戶端發送下列信息到郵件服務器端,同時以NetworkStream類的Read方法處理服務器端所返回的信息,以判斷是否正確。HELOrnMALL FROM:rnRCPT TO:rnDATArnrnrn. rnQUI
25、Trn(4)當郵件發送完畢,需要用TcpClient類的Close方法關閉客戶端與SMTP郵件服務器端的Socket連接。第第8 8章章 電子郵件協議編程電子郵件協議編程 20208.3 ESMTP8.3 ESMTP協議編程協議編程 8.3.1 ESMTP介紹 ESMTP(Extended SMTP,擴展SMTP)是對標準SMTP的擴展。它們的區別僅僅是:使用SMTP發信不需要驗證用戶賬戶,而用ESMTP發信時,服務器會要求用戶提供用戶名和密碼以便驗證身份。驗證之后的郵件發送過程與SMTP一樣。 為了更有效地抑制垃圾郵件的泛濫,許多E-Mail服務商和ISP(包括本站)升級了他們的SMTP系統
26、,即使用ESMTP的方式來提供E-mail發送服務。與從POP3服務器上收信一樣,在ESMTP服務器上發送郵件時,必須出示用戶的賬號和密碼。如果賬號和密碼不正確,ESMTP服務器會拒絕發送該郵件。這樣,在該E-Mail系統中沒有賬號的用戶就無法利用該ESMTP服務器亂發郵件了。8.3.2 ESMTP協議編程實例 本小節介紹基于ESMTP協議編寫一個有用戶認證、可以發送附件、功能比較全面的郵件發送程序。ESMTP是增強的SMTP協議,協議的工作流程與SMTP協議大致相同,只需要在SMTP的基礎上增加用戶認證功能即可。第第8 8章章 電子郵件協議編程電子郵件協議編程 21218.4 POP38.4
27、 POP3協議編程協議編程 8.4.1 POP3概述 POP3是用來接收郵件的協議,該協議的默認端口是110。POP3是根據RFC 1081 Post Office Protocol-version 3所制定,其中定義了POP3接收郵件的流程、指令等相關內容。 POP3的流程處理與SMTP協議的不同在于,SMTP發送郵件時,不需要用戶認證過程。即,SMTP協議發送郵件,不需要用戶提供賬號或密碼,通過具有SMTP服務的服務器即可發送郵件。但POP3不同,客戶端通過POP3到郵件服務器讀取郵件時,必須通過認證才能讀取郵件。 POP3流程分為如下3個階段。(1)認證。(2)郵件接收。(3)根據Tra
28、nsaction流程的定義,更新郵件信箱。 POP3接收郵件的流程圖如圖8.7所示。與SMTP相比,POP3的指令內容較為簡單,因為在每個階段,RFC均定義了客戶端所發送指令的格式以及服務器端響應的內容。(1)客戶端所發送的指令必須以CRLF結尾,含義如表8.1所示。(2)服務器端響應的信息,只有兩種情況。 +OK:表示指令執行正確。 ERR:表示指令執行錯誤。此外,在POP3的每個階段,均有相應的指令應用。(1)認證階段。在認證階段中,所有客戶端指令如表8.7所示。 第第8 8章章 電子郵件協議編程電子郵件協議編程 22228.4 POP38.4 POP3協議編程協議編程 8.4.1 POP
29、3概述圖8.7 POP3接收郵件流程圖第第8 8章章 電子郵件協議編程電子郵件協議編程 23238.4 POP38.4 POP3協議編程協議編程 8.4.1 POP3概述表8.7認證階段指令指 令語 法USERUSERPASSPASSQUITQUIT(2)郵件發送。在郵件發送階段中,所有客戶端指令如下表所示。指 令語 法STATSTATLISTLIST(mail #)RETRRETRDELEDELENOOPNOOPRSETRSET(3)更新郵件郵箱當客戶端執行QUIT指令與服務器端結束連接時,則進入POP3的最后階段:更新,主要是將郵件發送階段中被DELE指令刪除的郵件從郵件信箱中永久刪除。此
30、階段沒有任何指令。第第8 8章章 電子郵件協議編程電子郵件協議編程 24248.4 POP38.4 POP3協議編程協議編程 8.4.2 POP3客戶端程序Socket類實現 本小節主要介紹POP3客戶端程序的Socket實現。接收郵件流程如圖8.7所示。下面分別說明客戶端接收郵件和處理服務器端返回信息的方法。如代碼實例8.2所示。代碼實例8.2 POP3客戶端程序的Socket實現說明IPAddress IPAdd; IPEndPoint IPEndAdd; IPHostEntry IPHost; /與郵件服務器建立連接 try IPHost = Dns.Resolve(strHost);
31、IPAdd = IpHost.AddressList0; IPEndAdd = new IPEndPoint(IPAdd.Address),Int32.Parse(strPort); POP3Socket.Connect (IPEndAdd); if (!pop3Socket.Connected) / 用戶認證 strMsg =USER+strUser; if (!POP3Request(strMsg) return (false); if (!POP3Response( ) return(false); / PASS strMsg=PASS+strPass; if (!POP3Request
32、(strMsg) return (false); if (!POP3Response( ) return(false);第第8 8章章 電子郵件協議編程電子郵件協議編程 25258.4 POP38.4 POP3協議編程協議編程 8.4.2 POP3客戶端程序Socket類實現 /STAT strMsg =STAT; if (!POP3Request(strMsg) return (false); bytes = pop3Socket.Receive(ReceBytes,RecvBytes.Length,0); strResponse = Encoding.ASCII.GetString (Re
33、cvBytes,0,bytes); if (!strResponse.StartsWith (+OK) return (false); /+OK String strTemp=strResponse.Split(.ToCharArray( ); totalMail=Int31.Parse(strTemp1.Trim( ).ToString( ); mailSize=Int 32.Parse(strTemp2.Trim( ).ToString( ); /認證成功后,便可發送郵件。由客戶端發送RETR指令至服務器端, /待服務器端返回信息,便讀取郵件標題及內容, /其中,通過“.”判斷郵件內容結束
34、。 try strMsg = RETR+mailNo; if (!POP3Request (strMsg) return (false); do bytes = pop3Socket.Receive(RecvBytes,RecvBytes.Length,0); if (bytes 0 ) strResponse = Encoding.ASCII.GetString (RecvBytes,0,bytes); if (blnFlag) if(!strResponse.StartsWith(+OK) 第第8 8章章 電子郵件協議編程電子郵件協議編程 26268.4 POP38.4 POP3協議編程協
35、議編程 8.4.2 POP3客戶端程序Socket類實現 return (false); blnFlag=false; strContent = strContent strResponse; if(strContent.Trim ( ).EndWith (.) break; else break; While (true); texMessage.Text = strContent; return (true); Catch (Exception ex) return (false); /定義POP3Request函數private bool POP3Request (String strM
36、sg) byte byteMsg; strMsg = strMsg +r n; try byteMsg = Encoding.ASCII.GetBytes (strMsg.ToCharArray ( ); pop3Socket.Send (byteMsg,byteMsg.Length,SocketFlag.None); return (true); 第第8 8章章 電子郵件協議編程電子郵件協議編程 27278.4 POP38.4 POP3協議編程協議編程 8.4.2 POP3客戶端程序Socket類實現/定義POP3Response函數Private bool POP3Response ( )
37、 Byte RecvBytes = new byte256; string strResponse= ; int bytes; try bytes = pop3Socket.Receive (RecvBytes, RecvBytes.Length,0); strResponse = Encoding.ASCII.GetString (RecvBytes,0,bytes); if (!strResponse.StartsWith (+OK) pop3Socket.Shutdowm(SocketShutdown.Both); pop3Socket.Close ( ); return (false)
38、; else return (true); catch (Exception ex) pop3Socket.Shutdown(SocketShutdown.Both); pop3Socket.Close ( ); return (false); 第第8 8章章 電子郵件協議編程電子郵件協議編程 28288.4 POP38.4 POP3協議編程協議編程 8.4.3 POP3客戶端程序TCP客戶端類實現 編寫POP3客戶端應用程序,除了使用System.Net.Sockets的Socket類之外,也可使用TCP客戶端類實現,其流程圖如圖8.8所示。(1)首先客戶端用Tcp客戶端類與POP3郵件服務
39、器建立Socket連接,可使用Tcp客戶端類的Connect方法建立客戶端與服務器端的連接。圖8.8 利用Tcp客戶端類編寫應用程序流程圖程序示例如下:/指定服務器DNS主機名稱與端口號try Tcp客戶端 pop3Socket = new Tcp客戶端 ( );pop3Socket.Connect (strHost,Int32.Parse(str Port); Catch (Exception ex) 圖8.8 利用Tcp客戶端類編寫應用程序流程圖第第8 8章章 電子郵件協議編程電子郵件協議編程 29298.4 POP38.4 POP3協議編程協議編程 8.4.3 POP3客戶端程序TCP客戶端類實現(2)建立客戶端與服務器端數據發送接收的輸入輸出數據流,所建立的Tcp客戶端對象代表客戶端與服務器端的連接,可通過Tcp客戶端類的GetStream方法取得客戶端的輸入/輸出數據流。GetStream方法的原型為:public NetworkStream GetStream ( );程序示例如:NetworkStream networkStream = pop3Socket.GetStream ( );(3)然后用NetworkStream類的Write方法由客戶端發送下列信息至郵件服務器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電動機在手持電動工具中的應用考核試卷
- 批發商如何拓展家用視聽設備市場考核試卷
- 南通師范高等專科學校《英語小說閱讀》2023-2024學年第二學期期末試卷
- 梧州學院《現代食品高新技術進展》2023-2024學年第一學期期末試卷
- 天津城建大學《太陽能熱利用技術》2023-2024學年第二學期期末試卷
- 山西醫科大學《藥物統計學》2023-2024學年第二學期期末試卷
- 伊春市美溪區2024-2025學年四下數學期末聯考試題含解析
- 江蘇省泰州市2025屆三年級數學第二學期期末調研模擬試題含解析
- 天津市河東區天鐵一中學2024-2025學年初三下學期七調考試物理試題含解析
- 山東省青島六校聯考2025年初三下期第三次月考生物試題含解析
- 高中主題班會 揚中國精神承青年擔當團課課件-高一上學期愛國主義教育主題班會
- 2025年大學校園防詐知識競賽題庫200題(含答案)
- 情感營銷在社交網絡中的應用-深度研究
- 景區物業服務投標方案(技術標)
- 《新能源乘用車二手車鑒定評估技術規范 第1部分:純電動》
- Unit 6 Rain or shine Section A 2a-2e 說課稿 2024-2025學年人教版英語七年級下冊
- 登革熱診療方案(2024年版)
- 如何打造團隊氛圍:管理方法和技巧
- 統編版語文一年級下冊2024-2025學年度語文園地五(課件)
- 2025年江蘇省張家港市文化中心管委辦招聘3人歷年高頻重點提升(共500題)附帶答案詳解
- 中鐵開投、中鐵云投招聘筆試沖刺題2025
評論
0/150
提交評論