




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1第第5章章 SMTP應用編程應用編程 5.1 5.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件 2 電子郵件是通過電子郵件是通過SMTP服務器進行發(fā)送的,服務器進行發(fā)送的,SMTP是英文是英文Simple Mail Transfer Protocol的縮的縮寫,意為簡單郵件傳輸協(xié)議,默認端口為寫,意為簡單郵件傳輸協(xié)議,默認端口為25。使。使用用SMTP協(xié)議發(fā)送郵件時,有兩種形式:協(xié)議發(fā)送郵件時,有兩種形式: 1) 客戶端可以使用匿名方式發(fā)送郵件,不使用客戶端客戶端可以使用匿名方式發(fā)送郵件,不使用客戶端認證,這種方式即是一般的認證,這種方式即是一般的SMTP協(xié)議協(xié)議 2) 客戶端必須提
2、供用戶名和密碼,這種方式稱為客戶端必須提供用戶名和密碼,這種方式稱為ESMTP協(xié)議,即協(xié)議,即Extended SMTP,或者叫擴展,或者叫擴展SMTP。 3) ESMTP與與SMTP的區(qū)別除了是否需要認證以外,其的區(qū)別除了是否需要認證以外,其他均相同。為了避免或者減少垃圾郵件,目前大部分他均相同。為了避免或者減少垃圾郵件,目前大部分SMTP郵件服務器一般均采用用戶名密碼認證的方式。郵件服務器一般均采用用戶名密碼認證的方式。 5.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件3 在在SMTP協(xié)議中,電子郵件由三部分組成,協(xié)議中,電子郵件由三部分組成,信封、首部和正文。信封、首部和正文。
3、1)信封信封 信封包括發(fā)信人的郵件地址和接收人的郵件信封包括發(fā)信人的郵件地址和接收人的郵件地址,用兩條地址,用兩條SMTP命令指明。命令指明。 MAIL FROM:,告訴,告訴SMTP服務器發(fā)信人的地址。服務器發(fā)信人的地址。 RCPT TO:,告訴,告訴SMTP服務器收信人地址。服務器收信人地址。 5.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件(續(xù)續(xù)) 45.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件(續(xù)續(xù))2)首部首部 首部中常用命令:首部中常用命令: FROM:,表明郵件發(fā)送者是誰。,表明郵件發(fā)送者是誰。 TO:,表明郵件接收者是誰。,表明郵件接收者是誰。 SUBJEC
4、T:,表明郵件的主題。,表明郵件的主題。 DATE:,表明發(fā)郵件的時間。,表明發(fā)郵件的時間。 REPLY-TO:,表明郵件的回復地址。,表明郵件的回復地址。 Content-Type:,表明郵件包含文本、,表明郵件包含文本、HTML超文超文本和附件的哪些類型。本和附件的哪些類型。 X-Priority:,表明郵件的發(fā)送優(yōu)先級。,表明郵件的發(fā)送優(yōu)先級。 MIME-Version:,MIME的意思是的意思是Multipurpose Internet Mail Extensions,即多用途,即多用途Internet郵件擴展標準,它對郵件擴展標準,它對傳輸內(nèi)容的消息、附件及其他的內(nèi)容定義了格式。傳輸
5、內(nèi)容的消息、附件及其他的內(nèi)容定義了格式。 55.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件(續(xù)續(xù))3)正文正文 正文是郵件的內(nèi)容。首部以一個空行結(jié)束,正文是郵件的內(nèi)容。首部以一個空行結(jié)束,再下面就是正文部分。再下面就是正文部分。4) 結(jié)束符號結(jié)束符號 郵件以郵件以“rn.rn”結(jié)束。結(jié)束。65.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件(續(xù)續(xù)) 對于運行在沒有專用郵件服務器的大多數(shù)客戶程對于運行在沒有專用郵件服務器的大多數(shù)客戶程序而言,向序而言,向SMTP服務器發(fā)送郵件需要提供用戶服務器發(fā)送郵件需要提供用戶名和密碼,服務器驗證成功后,才能進行發(fā)送或名和密碼,服務器驗證成功后
6、,才能進行發(fā)送或接收。接收。 75.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件(續(xù)續(xù)) 85.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件(續(xù)續(xù)) (1)SMTP服務器主動臨聽服務器主動臨聽TCP端口端口25,客戶端,客戶端如要發(fā)送郵件的話,必須先與服務器建立如要發(fā)送郵件的話,必須先與服務器建立TCP連連接。接。 (2)客戶端向服務器發(fā)送的命令形式:用)客戶端向服務器發(fā)送的命令形式:用ASCII表示,之間由空格間隔,并以回車加換行結(jié)束。表示,之間由空格間隔,并以回車加換行結(jié)束。 (3)SMTP服務器響應碼形式,由三位數(shù)字組成,服務器響應碼形式,由三位數(shù)字組成,每一位都有特殊含
7、義。每一位都有特殊含義。 95.1 通過應用程序發(fā)送電子郵件通過應用程序發(fā)送電子郵件(續(xù)續(xù)) SMTP中常用的幾個命令:中常用的幾個命令: (1)HELLO命令命令:用于向服務器標識用戶身份,如果操作成成功,服用于向服務器標識用戶身份,如果操作成成功,服務器返回代碼務器返回代碼250 HELO (2)MAIL命令命令:用于指定信封的發(fā)件人,如果操作成成功,服務器用于指定信封的發(fā)件人,如果操作成成功,服務器返回代碼返回代碼250 MAIL FROM (3)RCPT命令命令:用于指定信封的郵件接收人,如果操作成成功,服用于指定信封的郵件接收人,如果操作成成功,服務器返回代碼務器返回代碼250 RC
8、PT TO (4)DATA命令命令:用于指定開始傳輸郵件,如果操作成成功,服務器用于指定開始傳輸郵件,如果操作成成功,服務器返回代碼返回代碼354 DATA (5)QUIT命令:用于結(jié)束回話,退出與命令:用于結(jié)束回話,退出與SMTP的的TCP連接,如果操連接,如果操作成功,服務器返回作成功,服務器返回221。 105.1基于基于SMTP協(xié)議發(fā)送郵件程序設計步驟協(xié)議發(fā)送郵件程序設計步驟(1)連接連接SMTP服務器服務器 如如:Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Protoc
9、olType.Tcp); clientSocket.Connect(, 25);(2)連接成功后創(chuàng)建網(wǎng)絡流對象連接成功后創(chuàng)建網(wǎng)絡流對象 ns = new NetworkStream(clientSocket); sr = new StreamReader(ns, Encoding.Default); sw = new StreamWriter(ns, Encoding.Default);115.1基于基于SMTP協(xié)議發(fā)送郵件程序設計步驟協(xié)議發(fā)送郵件程序設計步驟(3)編寫利用網(wǎng)絡流發(fā)送命令的函數(shù)編寫利用網(wǎng)絡流發(fā)送命令的函數(shù) private bool SendCommand(string str)
10、 byte sendBytes = Encoding.Default.GetBytes(str + rn); try ns.Write(sendBytes, 0, sendBytes.Length); ns.Flush(); catch (System.Exception ex) return false; return true; 125.1基于基于SMTP協(xié)議發(fā)送郵件程序設計步驟協(xié)議發(fā)送郵件程序設計步驟(4)編寫接收編寫接收SMTP響應函數(shù)響應函數(shù) private string GetReply() string temp = ; try temp = sr.ReadLine(); cat
11、ch (System.Exception ex) return temp; 135.1基于基于SMTP協(xié)議發(fā)送郵件程序設計步驟協(xié)議發(fā)送郵件程序設計步驟(5)登陸登陸SMTP服務器服務器 SendCommand(“AUTH LOGIN”);請求請求SMTP認證認證身份身份 string userName = ConvertTo64Str(textBoxUserName.Text.Trim(); SendCommand(userName);向向SMTP服務器發(fā)送服務器發(fā)送用戶名用戶名,其中用戶名要使用其中用戶名要使用Base 64編碼格式進行編編碼格式進行編碼碼 string password =
12、 ConvertTo64Str(textBoxPasswd.Text); SendCommand(password);向向SMTP服務器發(fā)送服務器發(fā)送密碼密碼,其中密碼要使用其中密碼要使用Base 64編碼格式進行編碼編碼格式進行編碼145.1基于基于SMTP協(xié)議發(fā)送郵件程序設計步驟協(xié)議發(fā)送郵件程序設計步驟(6)編寫把用戶名與密碼接照編寫把用戶名與密碼接照Base 64編碼格式進行編碼函數(shù)編碼格式進行編碼函數(shù) private string ConvertTo64Str(string str) try byte data = Encoding.Default.GetBytes(str); str
13、 = Convert.ToBase64String(data); return str; catch (System.Exception e) return null; 155.1基于基于SMTP協(xié)議發(fā)送郵件程序設計步驟協(xié)議發(fā)送郵件程序設計步驟(7)發(fā)送信封發(fā)送信封 temp = MAIL FROM:; SendCommand(temp);/發(fā)送信封的發(fā)件人發(fā)送信封的發(fā)件人 temp = RCPT TO:; SendCommand(temp);/發(fā)送信封的收件人發(fā)送信封的收件人 165.1基于基于SMTP協(xié)議發(fā)送郵件程序設計步驟協(xié)議發(fā)送郵件程序設計步驟(8)發(fā)送正文發(fā)送正文 (a) SendCommand(“DATA”);表示開始發(fā)送郵件表示開始發(fā)送郵件 (b) SendCommand(From: ); SendCommand(To: ); SendCommand(Subject: test); SendCommand(“D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腦卒中中醫(yī)護理方案
- 哇哈哈創(chuàng)業(yè)計劃書
- 腦科手術(shù)后護理
- 物聯(lián)網(wǎng)技術(shù)在物流行業(yè)的應用
- 品質(zhì)總監(jiān)年度工作總結(jié)
- 2025年初中地理學業(yè)水平考試模擬卷:地理環(huán)境演變專題訓練
- 2025年消防執(zhí)業(yè)資格考試題庫(綜合案例分析題)消防工程施工合同管理試題
- 2025年消防安全知識培訓考試題庫(火災預防與逃生)應急處理試題
- 2025年注冊會計師《會計》財務報表分析全真模擬試題解析與答案
- 2025年中考地理模擬卷-聚焦人文地理知識
- 2025年遼寧省交通高等??茖W校單招職業(yè)適應性測試題庫必考題
- DB12T 1315-2024城市內(nèi)澇氣象風險等級
- 歷史-浙江天域全國名校協(xié)作體2025屆高三下學期3月聯(lián)考試題和解析
- 高等數(shù)學(慕課版)教案 教學設計-1.3 極限的運算法則;1.4 極限存在準則與兩個重要極限
- 2025年淮北職業(yè)技術(shù)學院單招職業(yè)技能測試題庫附答案
- 2025屆高三化學一輪復習 化學工藝流程題說題 課件
- 第四周主題班會教案38婦女節(jié)《“致敬了不起的她”》
- 2025中國福州外輪代理限公司招聘15人易考易錯模擬試題(共500題)試卷后附參考答案
- 醫(yī)院化驗室管理制度
- 新課標(水平三)體育與健康《籃球》大單元教學計劃及配套教案(18課時)
- (2024)湖南省公務員考試《行測》真題卷及答案解析
評論
0/150
提交評論