P8-Email服務(wù)程序設(shè)計(jì)_第1頁(yè)
P8-Email服務(wù)程序設(shè)計(jì)_第2頁(yè)
P8-Email服務(wù)程序設(shè)計(jì)_第3頁(yè)
P8-Email服務(wù)程序設(shè)計(jì)_第4頁(yè)
P8-Email服務(wù)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)第8章Email效勞程序設(shè)計(jì)3/14/20241Email的使用分析Email的廣泛應(yīng)用:信息交換;工程管理;……Email引入的問(wèn)題?垃圾郵件;引入病毒……3/14/20242本章的主要內(nèi)容Email系統(tǒng)的工作原理SMTP協(xié)議編程POP3協(xié)議編程利用SmtpMail類發(fā)送Email利用JMail類收發(fā)Email3/14/202438.1Email系統(tǒng)的工作原理(1)工作原理3/14/20244(2)相關(guān)的協(xié)議RFC822:定義了SMTP、POP3、IMAP以及其他Email傳輸協(xié)議所提交和傳輸?shù)膬?nèi)容。SMTP:簡(jiǎn)單郵件傳輸協(xié)議;POP3:郵局協(xié)議第3版;IMAP4:網(wǎng)際消息訪問(wèn)協(xié)議;MIME:多用途Internet郵件擴(kuò)展3/14/202458.2SMTP協(xié)議編程(1)SMTP的指令與響應(yīng)碼命令語(yǔ)法命令描述HELOHELO<domain><CRLF>向服務(wù)器表示用戶身份。如果成功,服務(wù)器會(huì)返回代碼250MAILMAILFROM:<E-mailaddress><CRLF>初始化郵件傳輸。如果成功,服務(wù)器會(huì)返回代碼250RCPTRCPTTO:<E-mailaddress><CRLF>標(biāo)識(shí)單個(gè)郵件接收人。多個(gè)接收人將由多個(gè)該命令指定。如果成功,服務(wù)器會(huì)返回代碼250DATADATA<CRLF>用于設(shè)置郵件的主題、接收人、抄送列表和郵件的正文。DATA命令會(huì)初始化數(shù)據(jù)傳輸,一般在一個(gè)或多個(gè)RCPT命令后執(zhí)行DATA命令RSETRSET<CRLF>中止郵件發(fā)送處理NOOPNOOP<CRLF>令郵件服務(wù)器發(fā)送250信息SENDSEND<CRLF>處理郵件發(fā)送QUITQUIT<CRLF>結(jié)束會(huì)話,退出SMTP服務(wù)器并中斷連接。如果成功,會(huì)返回221,表示服務(wù)器關(guān)閉3/14/20246(2)SMTP響應(yīng)碼響應(yīng)碼含義響應(yīng)碼含義211響應(yīng)系統(tǒng)狀態(tài)500未定義的系統(tǒng)指令220服務(wù)器的郵件服務(wù)已準(zhǔn)備啟動(dòng)501系統(tǒng)指令的參數(shù)錯(cuò)誤221已結(jié)束與郵件服務(wù)器的連接502系統(tǒng)指令未被執(zhí)行250系統(tǒng)指令正確發(fā)送(OK)503系統(tǒng)指令順序錯(cuò)誤251無(wú)此收件人504系統(tǒng)指令的參數(shù)未被執(zhí)行354開(kāi)始郵件內(nèi)容發(fā)送,并以<CRLF>.<CRLF>表示結(jié)束550郵件信箱不存在421服務(wù)器無(wú)此郵件服務(wù)551無(wú)此收件人450郵件信箱不存在552系統(tǒng)容量不足451系統(tǒng)指令處理錯(cuò)誤553郵件信箱收件人名稱不存在452系統(tǒng)容量不足554郵件發(fā)送處理失敗3/14/20247(3)Email的組成信封MAILFROM:<發(fā)信人的EMAL地址>;RCPTTO:<收信人的E-mail地址>。首部,常用的字段格式有:FROM:<姓名><E-mail地址>;TO:<姓名><E-mail地址>;SUBJECT:<E-mail標(biāo)題>;DATE:<時(shí)間>;REPLY-TO:<E-mail地址>;Content-Type:<E-mail類型>;X-Priority:<E-mail優(yōu)先級(jí)>;MIME-Version:<版本>。

首部以一個(gè)空行結(jié)束。

正文:是E-mail的內(nèi)容,以“.”表示結(jié)束。

3/14/20248(4)ESMTP的工作流程主要包含4個(gè)階段:建立連接傳送信封傳送數(shù)據(jù)斷開(kāi)連接3/14/20249(5)ESMTP協(xié)議編程實(shí)例Email發(fā)送界面設(shè)計(jì)包含了效勞器對(duì)用戶信息的驗(yàn)證過(guò)程。3/14/202410主要代碼說(shuō)明//建立與SMTP效勞器的連接smtpSrv=newTcpClient(tBSrv.Text,25);//獲取一個(gè)網(wǎng)絡(luò)流對(duì)象,以便通過(guò)網(wǎng)絡(luò)連接來(lái)發(fā)送和接收數(shù)據(jù)netStrm=smtpSrv.GetStream();//生成一個(gè)StreamReader對(duì)象,用于從流中讀取數(shù)據(jù)StreamReaderrdStrm=newStreamReader(smtpSrv.GetStream());//向效勞器發(fā)送EHLOLocal,請(qǐng)求建立連接WriteStream("EHLOLocal");//讀取效勞器返回的信息,并寫(xiě)入信息列表中l(wèi)istBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//向效勞器發(fā)送AUTHLOGIN,請(qǐng)求認(rèn)證WriteStream("AUTHLOGIN");listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;data=tBUser.Text;//轉(zhuǎn)換為Base64編碼格式data=AuthStream(data);//向效勞器發(fā)送用戶名WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;data=tBpwd.Text;3/14/202411主要代碼說(shuō)明〔續(xù)〕//轉(zhuǎn)換密碼為Base64編碼格式,且傳送給效勞器data=AuthStream(data);WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//開(kāi)始發(fā)送E-mail的信封//發(fā)信人的E-mail地址data="MAILFROM:<"+tBSend.Text+">";WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//收信人的E-mail地址data="RCPTTO:<"+tBRev.Text+">";WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//開(kāi)始發(fā)送數(shù)據(jù)listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;3/14/202412主要代碼說(shuō)明〔續(xù)〕//開(kāi)始發(fā)送郵件的首部信息data="Date:"+DateTime.Now;//發(fā)送日期WriteStream(data);pb1.Value++;//發(fā)送郵件發(fā)送者信息data="From:"+tBSend.Text;WriteStream(data);pb1.Value++;//發(fā)送郵件接收者信息data="TO:"+tBRev.Text;WriteStream(data);pb1.Value++;//發(fā)送郵件的主題data="SUBJECT:"+tBSubject.Text;WriteStream(data);pb1.Value++;//發(fā)送回復(fù)地址data="Reply-TO:"+tBSend.Text;WriteStream(data);pb1.Value++;//發(fā)送一個(gè)空行,表示首部結(jié)束,開(kāi)始正文發(fā)送WriteStream("");pb1.Value++;3/14/202413主要代碼說(shuō)明〔續(xù)〕//發(fā)送郵件正文WriteStream(tBMailText.Text);pb1.Value++;//發(fā)送".",表示郵件內(nèi)容結(jié)束WriteStream(".");pb1.Value++;listBoxMsg.Items.Add(rdStrm.ReadLine());//發(fā)送斷開(kāi)連接命令WriteStream("QUIT");pb1.Value++;listBoxMsg.Items.Add(rdStrm.ReadLine());netStrm.Close();rdStrm.Close();pb1.Visible=false;labelp.Visible=false;MessageBox.Show("郵件發(fā)送成功!","成功");3/14/2024148.3POP3協(xié)議編程(1)POP3協(xié)議的工作流程3/14/202415(2)主要的POP3指令信息命令語(yǔ)法命令描述服務(wù)器返回信息示例USERUSER<loginname>將客戶的用戶名發(fā)送到服務(wù)器。成功后,服務(wù)器返回+OK正確的用戶名+OK<loginname>iswelcomeonthisserverPASSPASS<password>將客戶的密碼發(fā)送給服務(wù)器。成功后,服務(wù)器返回+OK正確的用戶信息+OK<loginname>loggedinat23:15QUITQUIT關(guān)閉與服務(wù)器的連接+OKSTATSTAT從服務(wù)器中讀取郵件總數(shù)和總字節(jié)數(shù)+OK13450LISTLIST<mail#>從服務(wù)器中獲取郵件列表和大小+OK2messages(350octets)200150RETRRETR<mail#>從服務(wù)器中獲得一份郵件+OK220octets<服務(wù)器發(fā)送郵件1內(nèi)容>.DELEDELE<mail#>服務(wù)器將郵件標(biāo)記為刪除,當(dāng)執(zhí)行QUIT命令時(shí)才真正刪除+OK1Deleted.(1為郵件號(hào))3/14/202416(3)POP3協(xié)議編程接收程序界面P204--2083/14/2024178.4利用SmtpMail類發(fā)送Email微軟公司在.NET中提供了SmtpMail類,能夠簡(jiǎn)化E-mail發(fā)送程序設(shè)計(jì)。該類屬于命名空間。使用時(shí),需要引用System.Web組件,即。3/14/2024188.4利用SmtpMail類發(fā)送Email命名空間包括3個(gè)類:MailMessageMailAttachmentSmtpMail以及3個(gè)枚舉類型:MailPriorityMailFormatMailEncoding3/14/202419(1)應(yīng)用例如:using;…mailMsg=newMailMessage();mailMsg.From="zzz@126";mailMsg.To="xxx@163";mailMsg.Cc="mmm@126";3/14/202420(2)處理Email信息下面舉例說(shuō)明發(fā)送HTML格式的郵件內(nèi)容:using;…mailMsg;stringmailBody="";mailBody="<HTML><BODY>";mailBody=mailBody&"<P><FONTCOLOR=""#FF0000"">";mailBody=mailBody&"ThisisaHTMLformate-mail.";mailBody=mailBody&"</Font></P>";mailBody=mailBody&</BODY></HTML>";mailMsg.BodyFormat=MailFormat.Html;mailMsg.Body=mailBody;3/14/202421(3)處理Email附件using;…mailAttach;mailAttach=newMailAttachment("E:\tempMail.txt");或者mailAttach=newMailAttachment("E:\tempMail.txt",MailEncoding.UUEncode);mailMsg.Attachments.Add(mailAttach);假設(shè)有幾個(gè)附件,那么依次用Attachment的Add方法將MailAttachment類所設(shè)置的附件參加Attachments屬性中,如:mailAttach=newMailAttachment("E:\tempMail1.txt");mailMsg.Attachments.Add(mailAttach);mailAttach=newMailAttachment("E:\tempMail2.txt");mailMsg.Attachments.Add(mailAttach);…3/14/202422(4)Email發(fā)送方法mailMsg=newMailMessage();mailMsg.From="zzz@126";mailMsg.To="xxx@163";mailMsg.Subject="E-mail通知";mailMsg.Body="E-mail正文";mailMsg.Priority=MailPriority.High;SmtpMail.Send(mailMsg);或者,SmtpMail.Send("zzz@126","xxx@163","E-mail通知","E-mail正文");3/14/2024238.5利用JMail類收發(fā)EmailJMail是Dimac公司〔〕推出的一種效勞器端的郵件發(fā)送組件,用來(lái)發(fā)送郵件和編寫(xiě)軟件。JMail是一個(gè)第三方郵件操作組件,和程序緊密配合來(lái)接收及提交郵件到郵件效勞器的控件,讓網(wǎng)站擁有發(fā)送郵件和接收郵件的功能,可以在ASP、VC、VB、C#、Delphi等開(kāi)發(fā)工具中調(diào)用。首先,下載Jmail組件,可以直接安裝;也可以找到Jmail.dll,手動(dòng)注冊(cè)組件。在命令行環(huán)境下,到Jmail.dll所在目錄,運(yùn)行regsvr32Jmail.dll。3/14/202424(1)JMail組件的特點(diǎn)①可以發(fā)送附件;②詳細(xì)日志能力,便于查看問(wèn)題所在;③設(shè)置郵件發(fā)送的優(yōu)先級(jí);④支持多種格式的郵件發(fā)送,例如以HTML或者TXT的方式發(fā)送郵件;⑤密件發(fā)送/〔CC〕抄送/緊急信件發(fā)送能力;⑥最關(guān)鍵的就是,這是款免費(fèi)的組件,所以非常值得使用。JMail4.0以上版本除了具備以上特點(diǎn)外,還有以下優(yōu)點(diǎn):①支持需要發(fā)信認(rèn)證的SMTP效勞器,現(xiàn)在多數(shù)免費(fèi)郵箱都需要SMTP發(fā)信認(rèn)證;②當(dāng)效勞器支持SMTP發(fā)信時(shí),JMail可以將信件參加SMTP發(fā)信隊(duì)列,因而速度很快;③支持在HTML郵件中嵌入附件中的圖片;④支持POP3收信,便于自行開(kāi)發(fā)郵件的收發(fā)軟件;⑤支持PGP加密郵件;⑥支持郵件合并,便于群發(fā)郵件,且每封信可以不同。3/14/202425JMail組件的主要參數(shù)與使用方法應(yīng)用例如:P214—2173/14/202426(2)基于JMail的Email發(fā)送usingjmail;jmail.Messagejmessage=newjmail.MessageClass();jmessage.Charset="GB2312";jmessage.From="";jmessage.FromName="ZhangXiaoming";jmessage.ReplyTo="xxx@163";jmessage.Subject="testE-mailfromjmessage";jmessage.AddRecipient("xxx@163","ZhangXiaoming","123");jmessage.Body="jmail的測(cè)試內(nèi)容";jmessage.MailServerUserName="ZhangXiaoming";jmessage.MailServerPassWord="userpassword";//設(shè)置優(yōu)先級(jí),范圍從1~5,越大的優(yōu)先級(jí)越高,3為普通jmessage.Priority=3jmessage.Send("smtp-server",false);MessageBox.Show("E-mail發(fā)送成功!");jmess

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論