第3章電子郵件的發(fā)送和接收_第1頁
第3章電子郵件的發(fā)送和接收_第2頁
第3章電子郵件的發(fā)送和接收_第3頁
第3章電子郵件的發(fā)送和接收_第4頁
第3章電子郵件的發(fā)送和接收_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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)中定時檢測用戶指定的郵件,并及時提醒用戶查看等。 3.1.1 SMTP協(xié)議 電子郵件是通過SMTP服務(wù)器進(jìn)行發(fā)送的,SMTP是英文Simple Mail Transfer Protocol的縮寫,意為簡單郵件傳輸協(xié)議,默認(rèn)端口為25

2、。使用SMTP協(xié)議發(fā)送郵件時,有兩種形式,一種是不使用客戶端認(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ā)郵件的時間。 REPLY-TO:,表明郵件的回復(fù)地址。 Content-Type:,表明郵件包含文本、HTML超文本和附件的哪些類型。 X-Priority:,表明郵件的發(fā)送優(yōu)先級。 MIME-Version:,MIME的意思是Multipurpose Internet Ma

4、il Extensions,即多用途Internet郵件擴(kuò)展標(biāo)準(zhǔn),它對傳輸內(nèi)容的消息、附件及其他的內(nèi)容定義了格式。 3) 正文:正文是郵件的內(nèi)容。首部以一個空行結(jié)束,再下面就是正文部分。 4) 結(jié)束符號:郵件以“.”結(jié)束。3.1.2 發(fā)送郵件 從SMTP協(xié)議的介紹可以看出,發(fā)送和接收郵件的內(nèi)部實(shí)現(xiàn)過程還是比較復(fù)雜的,如果全部從底層進(jìn)行編程,需要的代碼就比較多。因此在.NET框架2.0的System.Net.Mail命名空間中提供了專門對郵件進(jìn)行處理的類,從而使郵件的發(fā)送變得非常簡單。 對于運(yùn)行在沒有專用郵件服務(wù)器的大多數(shù)客戶程序而言,向SMTP服務(wù)器發(fā)送郵件需要提供用戶名和密碼,服務(wù)器驗(yàn)證成功

5、后,才能進(jìn)行發(fā)送或接收。因此在應(yīng)用程序中發(fā)送郵件,需要使用下面幾個類: 1) System.Net命名空間下的NetworkCredential類 該類用于提供客戶端身份驗(yàn)證機(jī)制的憑據(jù)。其中包括標(biāo)準(zhǔn)Internet身份驗(yàn)證方法(基本、簡要、協(xié)商、NTLM和Kerberos身份驗(yàn)證)以及可以創(chuàng)建的自定義方法。在郵件發(fā)送中,我們需要使用這個類提供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è)置以分號分隔的電子郵件地址列表,這些地址接受電子郵件的匿名副本(BCC)n Body 該屬性用于獲取或設(shè)置電子郵件的正文n

7、BodyEncoding 該屬性用于獲取或設(shè)置電子郵件正文的編碼類型n BodyEncoding 該屬性用于獲取或設(shè)置電子郵件正文的編碼類型n BodyFormat 該屬性用于獲取或設(shè)置電子郵件正文的內(nèi)容類型n Cc 該屬性用于獲取或設(shè)置以分號分隔的電子郵件地址列表,這些地址接受電子郵件的抄送副本(CC)n From 該屬性用于獲取或設(shè)置發(fā)件人的電子郵件地址n Headers 該屬性用于指定隨電子郵件一起傳輸?shù)淖远x標(biāo)頭n Priority 該屬性用于獲取或設(shè)置電子郵件的優(yōu)先級n Subject 該屬性用于獲取或設(shè)置電子郵件的主題行n To 該屬性用于獲取或設(shè)置以分號分隔的收件人電子郵件地址列

8、表n UrlContentBase 該屬性用于獲取或設(shè)置Content-Base HTTP標(biāo)頭,即在HTML編碼的電子郵件正文中使用的所有相對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類 該類用于提供附件對象,常用形式為: 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ì)一個Windows應(yīng)用程序,實(shí)現(xiàn)發(fā)送郵件的功能。要求利用正則表達(dá)式驗(yàn)證用戶輸入的信息,當(dāng)輸入信息符合要求時,才允許將郵件發(fā)送到郵件服務(wù)器。3.2 利用同步TCP接收電子郵件

11、 與發(fā)送電子郵件不同,接收電子郵件主要是利用POP(Post Office Protocol)協(xié)議,現(xiàn)在常用的是第三版,簡稱為POP3,默認(rèn)端口為110。通過POP3協(xié)議,客戶機(jī)登錄到服務(wù)器后,可以對自己的郵件進(jìn)行刪除或下載,下載后,電子郵件客戶端軟件就可以在本地對郵件進(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ù)器。這兩個服務(wù)器可能是同一臺計(jì)算機(jī),

12、也可能是兩臺計(jì)算機(jī)。 POP3郵件服務(wù)器通過偵聽TCP端口110提供POP3服務(wù)??蛻舳塑浖x取郵件之前,需要事先與服務(wù)器建立TCP連接。連接成功后,POP3服務(wù)器會向該客戶端發(fā)送確認(rèn)消息。然后客戶端根據(jù)服務(wù)器回送的信息決定下一步的操作。 客戶端每次向POP3服務(wù)器發(fā)送命令后,都要等待服務(wù)器響應(yīng),并處理接收的信息,然后再接著發(fā)送下一個命令,如此往復(fù)多次,一直持續(xù)到連接終止。這個過程經(jīng)歷了三個狀態(tài):授權(quán)(AUTHORIZATION)狀態(tài)、操作(TRANSACTION)狀態(tài)和更新(UPDATE)狀態(tài)。 在POP3協(xié)議中,規(guī)定的命令只有十幾條。每條命令均由命令和參數(shù)兩大部分組成,而且每條命令都以回車

13、換行結(jié)束。命令和參數(shù)之間由空格間隔。命令部分由三到四個字母組成,參數(shù)部分可達(dá)40個字符長度。 POP3服務(wù)器回送的響應(yīng)信息由一個狀態(tài)碼和一個可能跟有附加信息的命令組成。所有響應(yīng)也以回車換行結(jié)束。狀態(tài)碼有兩種:“確定”(“+OK”)和“失敗”(“-ERR”)。對于客戶端發(fā)送的每一條命令,服務(wù)器都會回送狀態(tài)碼。因此在客戶端程序中,可以通過服務(wù)器回送的狀態(tài)碼對應(yīng)的字符,即判斷第一個字符是“+”號還是“-”號來確定服務(wù)器是否正確響應(yīng)客戶端發(fā)送的命令。 1. 授權(quán)狀態(tài) 客戶端首先與POP3服務(wù)器建立TCP連接,服務(wù)器接收后發(fā)送一個單行的確認(rèn)信息。例如“+OK POP3 server ready”,此時P

14、OP3會話就進(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錯誤的用戶名。 示例: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錯誤的用戶名。 示例:C:PASS * S:+OK myname logged in at 19:04 授權(quán)成功后,進(jìn)入操作狀態(tài)。2. 操作狀態(tài) 客戶端向服務(wù)器成功確認(rèn)了自己的身份后,POP3會話將進(jìn)入操作狀態(tài),客戶就可以執(zhí)行POP3命令進(jìn)行相應(yīng)的操作。對于每個命令,服務(wù)器都會返回應(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ù)器中獲得一個郵件。 服務(wù)器返回:+OK成功;-ERR錯誤。 示例:C: RETR 1 S:+OK 120 octets S: S: . 注意,這里的“.”是單獨(dú)發(fā)送的。 (4) DELE命令 語法形式:DELE 功能:服務(wù)器將郵件標(biāo)記為刪除,當(dāng)執(zhí)行QUIT命令時才真正刪除。 服務(wù)器返回:+OK成功;-ERR錯誤。 示例:C:DELE 1 S:+OK 1 Deleted 當(dāng)客戶發(fā)送QUIT命令時,會話進(jìn)入更新狀態(tài)。3. 更新狀態(tài) 當(dāng)客戶在操作狀態(tài)下發(fā)送QUIT命令后,會話進(jìn)入更新狀態(tài)。 QUIT命令 語法形式:QU

溫馨提示

  • 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

提交評論