




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LOGO第3章 電子郵件的發(fā)送和接收第3章 電子郵件的發(fā)送和接收 隨著互聯(lián)網(wǎng)的普及,電子郵件已經(jīng)成為人們?nèi)粘9ぷ?、生活中必不可少的通訊工具。本章主要介紹如何利用SMTP與POP3協(xié)議實(shí)現(xiàn)郵件的發(fā)送和接收。 3.1 通過應(yīng)用程序發(fā)送電子郵件 不論是Windows應(yīng)用程序還是Web應(yīng)用程序,實(shí)現(xiàn)電子郵件的收發(fā)都是常用的功能,比如要求用戶以郵件方式提供反饋信息;在辦公系統(tǒng)中定時(shí)檢測(cè)用戶指定的郵件,并及時(shí)提醒用戶查看等。 3.1.1 SMTP協(xié)議 電子郵件是通過SMTP服務(wù)器進(jìn)行發(fā)送的,SMTP是英文Simple Mail Transfer Protocol的縮寫,意為簡(jiǎn)單郵件傳輸協(xié)議,默認(rèn)端口為25
2、。使用SMTP協(xié)議發(fā)送郵件時(shí),有兩種形式,一種是不使用客戶端認(rèn)證,即客戶端可以使用匿名方式發(fā)送郵件,這種方式即是一般的SMTP協(xié)議;另一種要求客戶端必須提供用戶名密碼,這種方式稱為ESMTP協(xié)議,即Extended SMTP,或者叫擴(kuò)展SMTP。ESMTP與SMTP的區(qū)別除了是否需要認(rèn)證以外,其他均相同。 客戶端發(fā)送電子郵件過程是:先通過客戶端軟件將郵件發(fā)送到SMTP郵件服務(wù)器,然后再由SMTP郵件服務(wù)器發(fā)送到目標(biāo)SMTP郵件服務(wù)器。 為了避免或者減少垃圾郵件,目前大部分SMTP郵件服務(wù)器一般均采用用戶名密碼認(rèn)證的方式。 在SMTP協(xié)議中,電子郵件由三部分組成,信封、首部和正文。 1) 信封:
3、信封包括發(fā)信人的郵件地址和接收人的郵件地址,用兩條SMTP命令指明。 MAIL FROM:,告訴SMTP服務(wù)器發(fā)信人的地址。 RCPT TO:,告訴SMTP服務(wù)器收信人的地址。2) 首部 首部中常用命令: FROM:,表明郵件發(fā)送者是誰。 TO:,表明郵件接收者是誰。 SUBJECT:,表明郵件的主題。 DATE:,表明發(fā)郵件的時(shí)間。 REPLY-TO:,表明郵件的回復(fù)地址。 Content-Type:,表明郵件包含文本、HTML超文本和附件的哪些類型。 X-Priority:,表明郵件的發(fā)送優(yōu)先級(jí)。 MIME-Version:,MIME的意思是Multipurpose Internet Ma
4、il Extensions,即多用途Internet郵件擴(kuò)展標(biāo)準(zhǔn),它對(duì)傳輸內(nèi)容的消息、附件及其他的內(nèi)容定義了格式。 3) 正文:正文是郵件的內(nèi)容。首部以一個(gè)空行結(jié)束,再下面就是正文部分。 4) 結(jié)束符號(hào):郵件以“.”結(jié)束。3.1.2 發(fā)送郵件 從SMTP協(xié)議的介紹可以看出,發(fā)送和接收郵件的內(nèi)部實(shí)現(xiàn)過程還是比較復(fù)雜的,如果全部從底層進(jìn)行編程,需要的代碼就比較多。因此在.NET框架2.0的System.Net.Mail命名空間中提供了專門對(duì)郵件進(jìn)行處理的類,從而使郵件的發(fā)送變得非常簡(jiǎn)單。 對(duì)于運(yùn)行在沒有專用郵件服務(wù)器的大多數(shù)客戶程序而言,向SMTP服務(wù)器發(fā)送郵件需要提供用戶名和密碼,服務(wù)器驗(yàn)證成功
5、后,才能進(jìn)行發(fā)送或接收。因此在應(yīng)用程序中發(fā)送郵件,需要使用下面幾個(gè)類: 1) System.Net命名空間下的NetworkCredential類 該類用于提供客戶端身份驗(yàn)證機(jī)制的憑據(jù)。其中包括標(biāo)準(zhǔn)Internet身份驗(yàn)證方法(基本、簡(jiǎn)要、協(xié)商、NTLM和Kerberos身份驗(yàn)證)以及可以創(chuàng)建的自定義方法。在郵件發(fā)送中,我們需要使用這個(gè)類提供SMTP服務(wù)器需要的用戶名和密碼,用法為: NetworkCredential myCredentials = new NetworkCredential(發(fā)件人郵件地址, 密碼); 2) System.Net.Mail命名空間下的MailAddress類
6、 該類用于提供發(fā)件人和收件人的郵件地址,常用形式為: MailAddress from = new MailAddress(發(fā)件人郵件地址); MailAddress to = new MailAddress(收件人郵件地址); 3) System.Net.Mail命名空間下的MailMessage類 該類用于提供郵件的信息,包括主題、內(nèi)容、附件、信息類型等,常用屬性如下:n Attachments 該屬性用于指定隨電子郵件一起傳送的附件集合n Bcc 該屬性用于獲取或設(shè)置以分號(hào)分隔的電子郵件地址列表,這些地址接受電子郵件的匿名副本(BCC)n Body 該屬性用于獲取或設(shè)置電子郵件的正文n
7、BodyEncoding 該屬性用于獲取或設(shè)置電子郵件正文的編碼類型n BodyEncoding 該屬性用于獲取或設(shè)置電子郵件正文的編碼類型n BodyFormat 該屬性用于獲取或設(shè)置電子郵件正文的內(nèi)容類型n Cc 該屬性用于獲取或設(shè)置以分號(hào)分隔的電子郵件地址列表,這些地址接受電子郵件的抄送副本(CC)n From 該屬性用于獲取或設(shè)置發(fā)件人的電子郵件地址n Headers 該屬性用于指定隨電子郵件一起傳輸?shù)淖远x標(biāo)頭n Priority 該屬性用于獲取或設(shè)置電子郵件的優(yōu)先級(jí)n Subject 該屬性用于獲取或設(shè)置電子郵件的主題行n To 該屬性用于獲取或設(shè)置以分號(hào)分隔的收件人電子郵件地址列
8、表n UrlContentBase 該屬性用于獲取或設(shè)置Content-Base HTTP標(biāo)頭,即在HTML編碼的電子郵件正文中使用的所有相對(duì)URL的URL基n UrlContentLocation 該屬性用于獲取或設(shè)置電子郵件的Content常用形式為:MailMessage message = new MailMessage(from, to);message.Subject = 主題;message.SubjectEncoding =System.Text.Encoding.UTF8;message.Headers.Add(“Date”, DateTime.Now.Tostring();
9、message.Priority=MailProio rity.High;message.Body = 郵件內(nèi)容;message.BodyEncoding = System.Text.Encoding.UTF8;4) System.Net.Mail命名空間下的Attachment類 該類用于提供附件對(duì)象,常用形式為: Attachment attachFile = new Attachment(文件名); message.Attachments.Add(attachFile);5) SmtpClient類 該類用于發(fā)送郵件,常用形式為: SmtpClient client = new Smtp
10、Client(郵件服務(wù)器地址); client.Send(message);方法說明SmtpClient()使用配置文件設(shè)置初始化SmtpClient類的新實(shí)例。SmtpClient(String)初始化SmtpClient類的新實(shí)例,讓其使用指定的SMTP服務(wù)器發(fā)送電子郵件。SmtpClient(String, Int32)初始化SmtpClient類的新實(shí)例,讓其使用指定的SMTP服務(wù)器和端口發(fā)送電子郵件。 【例1】設(shè)計(jì)一個(gè)Windows應(yīng)用程序,實(shí)現(xiàn)發(fā)送郵件的功能。要求利用正則表達(dá)式驗(yàn)證用戶輸入的信息,當(dāng)輸入信息符合要求時(shí),才允許將郵件發(fā)送到郵件服務(wù)器。3.2 利用同步TCP接收電子郵件
11、 與發(fā)送電子郵件不同,接收電子郵件主要是利用POP(Post Office Protocol)協(xié)議,現(xiàn)在常用的是第三版,簡(jiǎn)稱為POP3,默認(rèn)端口為110。通過POP3協(xié)議,客戶機(jī)登錄到服務(wù)器后,可以對(duì)自己的郵件進(jìn)行刪除或下載,下載后,電子郵件客戶端軟件就可以在本地對(duì)郵件進(jìn)行處理,隨Windows操作系統(tǒng)一塊安裝的Outlook Express就是這種工作方式。 實(shí)際上,收發(fā)郵件使用了兩種協(xié)議,一種是TCP協(xié)議,用于收發(fā)數(shù)據(jù);另一種是POP3協(xié)議,用于解析傳送的命令。3.2.1 POP3工作原理 凡是提供郵件服務(wù)的系統(tǒng),除了有SMTP服務(wù)器外,還有POP3服務(wù)器。這兩個(gè)服務(wù)器可能是同一臺(tái)計(jì)算機(jī),
12、也可能是兩臺(tái)計(jì)算機(jī)。 POP3郵件服務(wù)器通過偵聽TCP端口110提供POP3服務(wù)??蛻舳塑浖x取郵件之前,需要事先與服務(wù)器建立TCP連接。連接成功后,POP3服務(wù)器會(huì)向該客戶端發(fā)送確認(rèn)消息。然后客戶端根據(jù)服務(wù)器回送的信息決定下一步的操作。 客戶端每次向POP3服務(wù)器發(fā)送命令后,都要等待服務(wù)器響應(yīng),并處理接收的信息,然后再接著發(fā)送下一個(gè)命令,如此往復(fù)多次,一直持續(xù)到連接終止。這個(gè)過程經(jīng)歷了三個(gè)狀態(tài):授權(quán)(AUTHORIZATION)狀態(tài)、操作(TRANSACTION)狀態(tài)和更新(UPDATE)狀態(tài)。 在POP3協(xié)議中,規(guī)定的命令只有十幾條。每條命令均由命令和參數(shù)兩大部分組成,而且每條命令都以回車
13、換行結(jié)束。命令和參數(shù)之間由空格間隔。命令部分由三到四個(gè)字母組成,參數(shù)部分可達(dá)40個(gè)字符長(zhǎng)度。 POP3服務(wù)器回送的響應(yīng)信息由一個(gè)狀態(tài)碼和一個(gè)可能跟有附加信息的命令組成。所有響應(yīng)也以回車換行結(jié)束。狀態(tài)碼有兩種:“確定”(“+OK”)和“失敗”(“-ERR”)。對(duì)于客戶端發(fā)送的每一條命令,服務(wù)器都會(huì)回送狀態(tài)碼。因此在客戶端程序中,可以通過服務(wù)器回送的狀態(tài)碼對(duì)應(yīng)的字符,即判斷第一個(gè)字符是“+”號(hào)還是“-”號(hào)來確定服務(wù)器是否正確響應(yīng)客戶端發(fā)送的命令。 1. 授權(quán)狀態(tài) 客戶端首先與POP3服務(wù)器建立TCP連接,服務(wù)器接收后發(fā)送一個(gè)單行的確認(rèn)信息。例如“+OK POP3 server ready”,此時(shí)P
14、OP3會(huì)話就進(jìn)入了授權(quán)狀態(tài)。在授權(quán)狀態(tài),客戶需要向服務(wù)器發(fā)送用戶名和密碼進(jìn)行確認(rèn)。 假設(shè)用C表示客戶端(Client),S表示服務(wù)器端(Server),下面是客戶端接收郵件前需要與服務(wù)器傳輸?shù)男畔ⅰ?1) 發(fā)送用戶名。 語法形式:USER 功能:將客戶的用戶名發(fā)送到服務(wù)器。 服務(wù)器返回:+OK正確的用戶名;-ERR錯(cuò)誤的用戶名。 示例:C:USER S:+OK welcome on this server. 上述兩行代碼的含義為:客戶端發(fā)送“USER ”,服務(wù)器端回送信息“+OK welcome on this server.”。 2) 用戶名確認(rèn)成功后,需要輸入密碼。 語法形式:PASS 功
15、能:將客戶的密碼發(fā)送給服務(wù)器。 服務(wù)器返回:+OK正確的用戶名;-OK錯(cuò)誤的用戶名。 示例:C:PASS * S:+OK myname logged in at 19:04 授權(quán)成功后,進(jìn)入操作狀態(tài)。2. 操作狀態(tài) 客戶端向服務(wù)器成功確認(rèn)了自己的身份后,POP3會(huì)話將進(jìn)入操作狀態(tài),客戶就可以執(zhí)行POP3命令進(jìn)行相應(yīng)的操作。對(duì)于每個(gè)命令,服務(wù)器都會(huì)返回應(yīng)答信息。下面是在操作狀態(tài)中使用的命令。 (1) STAT命令 語法形式:STAT 功能:從服務(wù)器中獲取郵件總數(shù)和總字節(jié)數(shù)。 服務(wù)器返回:郵件總數(shù)和總字節(jié)數(shù)。 示例:C:STAT S:+OK 2 320 (2) LIST命令 語法形式:LIST 功
16、能:從服務(wù)中獲得郵件列表和大小。 服務(wù)器返回:列出郵件列表和大小。 示例:C:LIST S:+OK 2 messages (320 octets) S:1 120 S:2 200 S: . (3) RETR命令 語法形式:RETR 功能:從服務(wù)器中獲得一個(gè)郵件。 服務(wù)器返回:+OK成功;-ERR錯(cuò)誤。 示例:C: RETR 1 S:+OK 120 octets S: S: . 注意,這里的“.”是單獨(dú)發(fā)送的。 (4) DELE命令 語法形式:DELE 功能:服務(wù)器將郵件標(biāo)記為刪除,當(dāng)執(zhí)行QUIT命令時(shí)才真正刪除。 服務(wù)器返回:+OK成功;-ERR錯(cuò)誤。 示例:C:DELE 1 S:+OK 1 Deleted 當(dāng)客戶發(fā)送QUIT命令時(shí),會(huì)話進(jìn)入更新狀態(tài)。3. 更新狀態(tài) 當(dāng)客戶在操作狀態(tài)下發(fā)送QUIT命令后,會(huì)話進(jìn)入更新狀態(tài)。 QUIT命令 語法形式:QU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 離職補(bǔ)償合同范本
- 環(huán)衛(wèi)項(xiàng)目合同范本
- 7 多元文化 多樣魅力 第3課時(shí) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治六年級(jí)下冊(cè)統(tǒng)編版
- 白楊教學(xué)設(shè)計(jì)
- 2023-2024學(xué)年泰山版信息技術(shù)(2018)第六冊(cè)《第一單元 裝扮美好生活 4 漂亮花瓶巧設(shè)計(jì)》教學(xué)設(shè)計(jì)
- Module 4 Unit 2 Children's Day(教學(xué)設(shè)計(jì))-2023-2024學(xué)年牛津上海版(試用本)英語三年級(jí)下冊(cè)
- Module 12 help unit 3 language in use教學(xué)設(shè)計(jì) -2024-2025學(xué)年外研版八年級(jí)英語上冊(cè)
- 新一年家長(zhǎng)會(huì)教師的演講稿
- 21涼州詞教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)上冊(cè)語文統(tǒng)編版
- 秋季學(xué)期散學(xué)典禮校長(zhǎng)講話稿
- 2025年企業(yè)法務(wù)顧問聘用協(xié)議范本
- DB37-T4824-2025 鄉(xiāng)鎮(zhèn)(街道)應(yīng)急物資配備指南
- 《康復(fù)評(píng)定技術(shù)》課件-第五章 運(yùn)動(dòng)控制
- 【理特咨詢】2024生成式人工智能GenAI在生物醫(yī)藥大健康行業(yè)應(yīng)用進(jìn)展報(bào)告
- 2025年春新外研版(三起)英語三年級(jí)下冊(cè)課件 Unit6第1課時(shí)Startup
- 平拋運(yùn)動(dòng)的經(jīng)典例題
- 錄井作業(yè)現(xiàn)場(chǎng)風(fēng)險(xiǎn)評(píng)估及控制措施
- 2025年度商會(huì)工作計(jì)劃
- 社區(qū)管理與服務(wù)專業(yè)實(shí)習(xí)總結(jié)范文
- 施工現(xiàn)場(chǎng)5S管理規(guī)范
- 機(jī)油化學(xué)品安全技術(shù)(MSDS)說明書
評(píng)論
0/150
提交評(píng)論