




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
北京傳智播客教育Java郵件開發(fā)詳解講師:張孝祥北京傳智播客教育配套書籍北京傳智播客教育
Java郵件開發(fā)介紹課程目標(biāo)為什么要學(xué)習(xí)和如何學(xué)習(xí)郵件開發(fā)電子郵件的一些基本常識(shí)準(zhǔn)備實(shí)驗(yàn)環(huán)境SMTP協(xié)議與POP3協(xié)議什么是JavaMail編寫郵件發(fā)送程序郵件內(nèi)容的組織結(jié)構(gòu)與郵件內(nèi)容創(chuàng)建程序郵件接收程序的簡要介紹北京傳智播客教育課程目標(biāo)用程序代碼生成一封帶附件和內(nèi)嵌圖片的復(fù)雜郵件(效果演示)用自己的程序代碼將復(fù)雜郵件發(fā)送出去(效果演示)一些特殊的經(jīng)驗(yàn)和高級(jí)應(yīng)用中文名的郵件附件的亂碼問題Tomcat中JavaMail支持與沖突問題SMTP郵件服務(wù)器程序的開發(fā)北京傳智播客教育為什么要學(xué)習(xí)郵件開發(fā)曾經(jīng)很賺錢的技術(shù):丁磊早期就是靠郵件起家,參看收集的網(wǎng)絡(luò)資料我本人對(duì)外承接的第一個(gè)項(xiàng)目也是郵件系統(tǒng)對(duì)找工作有幫助:我們好幾個(gè)學(xué)員畢業(yè)后出去都在做郵件相關(guān)的項(xiàng)目,其中一個(gè)有意義的項(xiàng)目是將郵件內(nèi)容發(fā)布成BBS的帖子。許多辦公自動(dòng)化項(xiàng)目(OA)中都要附帶發(fā)送郵件的功能,譬如我們要給學(xué)員發(fā)送通知,使用OutLook等手工方式就不合適,需要提高工作效率,讓工作能夠自動(dòng)化,這也算是信息化建設(shè)的一部分吧!在許多網(wǎng)站項(xiàng)目中也都需要附帶發(fā)送郵件的功能,即要求軟件開發(fā)人員在WEB應(yīng)用中編寫相應(yīng)的郵件處理程序。給新注冊(cè)的用戶自動(dòng)發(fā)送一封包含其注冊(cè)信息的歡迎E-Mail給過生日的注冊(cè)會(huì)員自動(dòng)發(fā)送一封表示祝賀的E-Mail將網(wǎng)站的最新活動(dòng)信息通過E-Mail發(fā)送給所有的注冊(cè)會(huì)員北京傳智播客教育如何學(xué)習(xí)郵件開發(fā)學(xué)習(xí)郵件開發(fā)包括兩大方面:發(fā)送與接收郵件創(chuàng)建與解析郵件內(nèi)容北京傳智播客教育
電子郵件的一些基本常識(shí)郵件服務(wù)器電子郵箱郵件客戶端軟件郵件傳輸協(xié)議電子郵件的傳輸過程北京傳智播客教育
郵件服務(wù)器電子郵件服務(wù)器主要提供以下功能:(1)接收用戶投遞的郵件;(2)將用戶投遞進(jìn)來的郵件轉(zhuǎn)發(fā)給目標(biāo)郵件服務(wù)器;(3)接收其他郵件服務(wù)器轉(zhuǎn)發(fā)來的郵件并把郵件存儲(chǔ)到其管理的用戶郵中;(4)為前來讀取郵件的用戶提供讀取服務(wù)。郵件服務(wù)器按通訊協(xié)議可以劃分為兩種類型:SMTP服務(wù)器POP3/IMAP服務(wù)器北京傳智播客教育
電子郵箱與郵件客戶端軟件
電子郵箱:每個(gè)電子郵件服務(wù)器之上都可以開設(shè)多個(gè)電子郵箱,電子郵箱也稱之為E-mail地址,它類似現(xiàn)實(shí)生活中的通訊地址,用戶可通過這個(gè)地址接收別人發(fā)來的電子郵件和向別人發(fā)送電子郵件。電子郵箱的獲得需要在郵件服務(wù)器上進(jìn)行申請(qǐng),確切地說,電子郵箱其實(shí)就是用戶在郵件服務(wù)器上申請(qǐng)的一個(gè)帳戶。郵件服務(wù)器把接收到的郵件保存到為某個(gè)帳戶所分配的郵箱空間中,用戶通過其申請(qǐng)的用戶名和密碼登陸到郵件服務(wù)器上查收該地址已收到的電子郵件。郵件客戶端軟件:郵件客戶端軟件負(fù)責(zé)與郵件服務(wù)器通訊,主要用于幫助用戶將郵件發(fā)送給SMTP服務(wù)器和從POP3/IMAP郵件服務(wù)器讀取用戶的電子郵件。郵件客戶端軟件通常集郵件撰寫、發(fā)送和接收功能于一體。北京傳智播客教育
電子郵件的傳輸過程
北京傳智播客教育準(zhǔn)備實(shí)驗(yàn)環(huán)境提前在sina和sohu上開設(shè)一個(gè)免費(fèi)帳號(hào)獲取smtp和pop3服務(wù)器的名稱在outlook中配置sina帳戶使用outlook發(fā)送和接收郵件北京傳智播客教育sina
sohu
smtpsmtppop3北京傳智播客教育
郵件傳輸協(xié)議SMTP協(xié)議全稱為SimpleMailTransferProtocol(簡單郵件傳輸協(xié)議),它定義了郵件客戶端軟件與SMTP服務(wù)器之間、以及兩臺(tái)SMTP服務(wù)器之間的通訊規(guī)則。POP3協(xié)議全稱為PostOfficeProtocol(郵局協(xié)議),它定義了郵件客戶端軟件與POP3服務(wù)器的通訊規(guī)則。IMAP協(xié)議全稱為InternetMessageAccessProtocal(Internet消息訪問協(xié)議),它是對(duì)POP3協(xié)議的一種擴(kuò)展,定義了郵件客戶端軟件與IMAP服務(wù)器的通訊規(guī)則。北京傳智播客教育SMTP協(xié)議的命令SMTP命令及格式說明Ehlo<SP><domain><CRLF>ehlo命令是SMTP郵件發(fā)送程序與SMTP郵件接收程序建立連接后必須發(fā)送的第一條SMTP命令,參數(shù)<domain>表示SMTP郵件發(fā)送者的主機(jī)名。ehlo命令用于替代傳統(tǒng)SMTP協(xié)議中的helo命令。Auth<SP><para><CRLF>如果SMTP郵件接收程序需要SMTP郵件發(fā)送程序進(jìn)行認(rèn)證時(shí),它會(huì)向SMTP郵件發(fā)送程序提示它所采用的認(rèn)證方式,SMTP郵件發(fā)送程序接著應(yīng)該使用這個(gè)命令回應(yīng)SMTP郵件接收程序,參數(shù)<para>表示回應(yīng)的認(rèn)證方式,通常是SMTP郵件接收程序先前提示的認(rèn)證方式。Mail<SP>From:<reverse-path><CRLF>此命令用于指定郵件發(fā)送者的郵箱地址,參數(shù)<reverse-path>表示發(fā)件人的郵箱地址。Rcpt<SP>To:<forword-path><CRLF>此命令用于指定郵件接收者的郵箱地址,參數(shù)<forward-path>表示接收者的郵箱地址。如果郵件要發(fā)送給多個(gè)接收者,那么應(yīng)使用多條Rcpt<SP>To命令來分別指定每一個(gè)接收者的郵箱地址。Data<CRLF>此命令用于表示SMTP郵件發(fā)送程序準(zhǔn)備開始傳送郵件內(nèi)容,在這個(gè)命令后面發(fā)送的所有數(shù)據(jù)都將被當(dāng)作郵件內(nèi)容,直至遇到“<CRLF>.<CRLF>”標(biāo)識(shí)符,則表示郵件內(nèi)容結(jié)束。Quit<CRLF>此命令表示要結(jié)束郵件發(fā)送過程,SMTP郵件接收程序接收到此命令后,將關(guān)閉與SMTP郵件發(fā)送程序的網(wǎng)絡(luò)連接。北京傳智播客教育POP3協(xié)議的命令命令及其使用格式說明user<SP>username<CRLF>user命令是POP3客戶端程序與POP3郵件服務(wù)器建立連接后通常發(fā)送的第一條命令,參數(shù)username表示收件人的帳戶名稱。pass<SP>password<CRLF>pass命令是在user命令成功通過后,POP3客戶端程序接著發(fā)送的命令,它用于傳遞帳戶的密碼,參數(shù)password表示帳戶的密碼。apop<SP>name,digest<CRLF>apop命令用于替代user和pass命令,它以MD5數(shù)字摘要的形式向POP3郵件服務(wù)器提交帳戶密碼。stat<CRLF>stat命令用于查詢郵箱中的統(tǒng)計(jì)信息,例如,郵箱中有郵件數(shù)和郵件占用的字節(jié)大小等。uidl<SP>msg#<CRLF>uidl命令用于查詢某封郵件的唯一標(biāo)識(shí)符,參數(shù)msg#表示郵件的序號(hào),是一個(gè)從1開始編號(hào)的數(shù)字。list<SP>[msg#]<CRLF>list命令用于列出郵箱中的郵件信息,參數(shù)msg#是一個(gè)可選參數(shù),表示郵件的序號(hào)。當(dāng)不指定參數(shù)時(shí),POP3服務(wù)器列出郵箱中所有的郵件信息;當(dāng)指定參數(shù)msg#時(shí),POP3服務(wù)器只返回該序號(hào)對(duì)應(yīng)的郵件的信息。retr<SP>msg#<CRLF>list命令用于獲取某封郵件的內(nèi)容,參數(shù)msg#表示郵件的序號(hào)。dele<SP>msg#<CRLF>dele命令用于在某封郵件上設(shè)置刪除標(biāo)記,參數(shù)msg#表示郵件的序號(hào)。POP3服務(wù)器執(zhí)行dele命令時(shí),只是為郵件設(shè)置了刪除標(biāo)記,并沒有真正把郵件刪除掉,只有POP3客戶端程序發(fā)出quit命令后,POP3服務(wù)器才會(huì)真正刪除所有設(shè)置了刪除標(biāo)記的郵件。rset<CRLF>rset命令用于清除所有郵件的刪除標(biāo)記。top<SP>msg#<SP>n<CRLF>top命令用于獲取某封郵件的郵件頭和郵件體中的前n行內(nèi)容,參數(shù)msg#表示郵件的序號(hào),參數(shù)n表示要返回郵件的前幾行內(nèi)容。使用這條命令以提高WebMail系統(tǒng)(通過Web站點(diǎn)上收發(fā)郵件)中的郵件列表顯示的處理效率,因?yàn)檫@種情況下不需要獲取每封郵件的完整內(nèi)容,而是僅僅需要獲取每封郵件的郵件頭信息。noop<CRLF>noop命令用于檢測(cè)POP3客戶端與POP3服務(wù)器的連接情況。quit<CRLF>quit命令表示要結(jié)束郵件接收過程,POP3服務(wù)器接收到此命令后,將刪除所有設(shè)置了刪除標(biāo)記的郵件,并關(guān)閉與POP3客戶端程序的網(wǎng)絡(luò)連接。北京傳智播客教育什么是JavaMail要自己寫程序發(fā)送和接收郵件,可以直接采用Socket編程連接上遠(yuǎn)程的郵件服務(wù)器,然后按照郵件協(xié)議與郵件服務(wù)器進(jìn)行交互,涉及較多細(xì)節(jié)。另外,要想自己編程創(chuàng)建出復(fù)雜的MIME格式的郵件,是一件非常困難和麻煩的事情。JavaMail是Sun公司為方便Java開發(fā)人員在應(yīng)用程序中實(shí)現(xiàn)郵件發(fā)送和接收功能而提供的一套標(biāo)準(zhǔn)開發(fā)包,它支持一些常用的郵件協(xié)議,如SMTP、POP3、IMAP。開發(fā)人員使用JavaMailAPI編寫郵件處理軟件時(shí),無須考慮郵件協(xié)議的底層實(shí)施細(xì)節(jié),只要調(diào)用JavaMail開發(fā)包中相應(yīng)的API類就可以了。JavaMail也提供了能夠創(chuàng)建出各種復(fù)雜MIME格式的郵件內(nèi)容的相關(guān)API。北京傳智播客教育
JavaMail的體系結(jié)構(gòu)與API分類JavaMailAPI按其功能劃分通常可分為如下三大類:創(chuàng)建和解析郵件內(nèi)容的API:Message類是創(chuàng)建和解析郵件的核心API,它的實(shí)例對(duì)象代表一封電子郵件。發(fā)送郵件的API:Transport類是發(fā)送郵件的核心API類,它的實(shí)例對(duì)象代表實(shí)現(xiàn)了某個(gè)郵件發(fā)送協(xié)議的郵件發(fā)送對(duì)象,例如SMTP協(xié)議。接收郵件的API:Store類是接收郵件的核心API類,它的實(shí)例對(duì)象代表實(shí)現(xiàn)了某個(gè)郵件接收協(xié)議的郵件接收對(duì)象,例如POP3協(xié)議。Session類
Session類用于定義整個(gè)應(yīng)用程序所需的環(huán)境信息,以及收集客戶端與郵件服務(wù)器建立網(wǎng)絡(luò)連接的會(huì)話信息,如郵件服務(wù)器的主機(jī)名、端口號(hào)、采用的郵件發(fā)送和接收協(xié)議等。Session對(duì)象根據(jù)這些信息構(gòu)建用于郵件收發(fā)的Transport和Store對(duì)象,以及為客戶端創(chuàng)建Message對(duì)象時(shí)提供信息支持。北京傳智播客教育JAF簡介
JAF(JavaBeansActivationFramework,JavaBeans激活框架)是一個(gè)專用的數(shù)據(jù)處理框架,它用于封裝數(shù)據(jù),并為應(yīng)用程序提供訪問和操作數(shù)據(jù)的接口。JAF的主要作用在于讓Java應(yīng)用程序知道如何對(duì)一個(gè)數(shù)據(jù)源進(jìn)行查看、編輯和打印等操作。對(duì)于通過JAF封裝的數(shù)據(jù),應(yīng)用程序通過JAF提供的接口可以完成如下功能:訪問數(shù)據(jù)源中的數(shù)據(jù)獲知數(shù)據(jù)源的數(shù)據(jù)類型獲知可對(duì)數(shù)據(jù)進(jìn)行的各種操作用戶對(duì)數(shù)據(jù)執(zhí)行某種操作時(shí),自動(dòng)創(chuàng)建執(zhí)行該操作的軟件部件的實(shí)例對(duì)象JavaMailAPI可以利用JAF從某種數(shù)據(jù)源中讀取數(shù)據(jù)和獲知數(shù)據(jù)的MIME類型,并用這些數(shù)據(jù)生成MIME消息中的消息體和消息類型。北京傳智播客教育
郵件發(fā)送程序使用JavaMail發(fā)送一封簡單的郵件:創(chuàng)建包含郵件服務(wù)器的網(wǎng)絡(luò)連接信息的Session對(duì)象。
創(chuàng)建代表郵件內(nèi)容的Message對(duì)象。創(chuàng)建Transport對(duì)象、連接服務(wù)器、發(fā)送Message、關(guān)閉連接。應(yīng)用Authenticator類實(shí)現(xiàn)用戶信息驗(yàn)證結(jié)合Transport.send靜態(tài)方法使用。北京傳智播客教育郵件內(nèi)容的組織結(jié)構(gòu)RFC822郵件格式MIME協(xié)議郵件編碼復(fù)合郵件結(jié)構(gòu)分析北京傳智播客教育復(fù)合郵件的整體結(jié)構(gòu)圖北京傳智播客教育MIME中的組合關(guān)系北京傳智播客教育復(fù)合郵件的分隔線層次結(jié)構(gòu)分析北京傳智播客教育郵件組織結(jié)構(gòu)相關(guān)的APIMimeMessage類表示整封郵件。MimeBodyPart類表示郵件的一個(gè)MIME消息。MimeMultipart類表示一個(gè)由多個(gè)MIME消息組合成的組合MIME消息。北京傳智播客教育郵件內(nèi)容創(chuàng)建程序簡單郵件內(nèi)容包含內(nèi)嵌圖片的復(fù)雜郵件包含內(nèi)嵌圖片和附件的復(fù)雜郵件中文名的郵件附件的亂碼問題收件人和發(fā)件人的地址中附帶友好名稱讓回復(fù)地址與發(fā)件人地址不同北京傳智播客教育在Web應(yīng)用程序中增加郵件發(fā)送功能北京傳智播客教育Web郵件發(fā)送的界面示意系統(tǒng)配置會(huì)員管理產(chǎn)品管理權(quán)限管理新聞發(fā)布郵件發(fā)送注銷后臺(tái)管理系統(tǒng)收件人:選擇郵件正文:附件1:附件2:附件3:發(fā)送單擊后調(diào)出查詢界面北京傳智播客教育Tomcat中JavaMail支持與沖突用普通方式在web應(yīng)用程序中增加郵件發(fā)送功能先演示在eclipse沒有導(dǎo)入mail.jar可以編譯,但部署運(yùn)行有問題的原因用Tomcat支持的JNDI資源方式,步驟:配置JNDI資源。將mail.jar拷貝到<tomcat_home>/lib目錄下。在Java程序中使用JNDIAPI獲得mail的session對(duì)象。分析類加載的沖突問題北京傳智播客教育Webapp/lib/mail.jarJndicontextJndiapitomcat北京傳智播客教育SMTP郵件服務(wù)器程序SMTP郵件服務(wù)器與客戶端程序的技術(shù)差異,SMTP郵件服務(wù)器既能收,也能發(fā)。發(fā)的時(shí)候怎樣得知其他域的郵件服務(wù)器的地址?smtp服務(wù)器又分為兩類,例如sina的,這兩類服務(wù)器在接收郵件時(shí)也存在技術(shù)差異。北京傳智播客教育SMTP郵件服務(wù)器程序配置與查看DNS服務(wù)器驗(yàn)證DNS服務(wù)的作用MX(mailbox)記錄域名解析原理北京傳智播客教育域名解析原理一個(gè)域中的每個(gè)主機(jī)名與其IP地址的映射關(guān)系由這個(gè)域的DNS服務(wù)器負(fù)責(zé)管理,例如,“
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大班冬季交通安全課件
- 行政事業(yè)單位合同
- 項(xiàng)目推進(jìn)時(shí)間表與工作計(jì)劃書
- 泥工裝修詳細(xì)合同
- 大型體育賽事組織協(xié)議
- 能源互聯(lián)網(wǎng)項(xiàng)目戰(zhàn)略合作協(xié)議
- 農(nóng)業(yè)機(jī)械維修技術(shù)作業(yè)指導(dǎo)書
- 季度運(yùn)營策略及任務(wù)部署會(huì)議紀(jì)要
- 設(shè)計(jì)行業(yè)設(shè)計(jì)方案修改免責(zé)協(xié)議
- 企業(yè)互聯(lián)網(wǎng)應(yīng)用服務(wù)推廣合作協(xié)議
- 深靜脈血栓形成的診斷和治療指南(第三版)解讀資料講解課件
- 人教版小學(xué)一年級(jí)美術(shù)上冊(cè)全冊(cè)課件
- 統(tǒng)編人教部編版道德與法治四年級(jí)下冊(cè)教材解讀教師教材培訓(xùn)課件
- 履約專項(xiàng)檢查表
- 人教版數(shù)學(xué)四年級(jí)下冊(cè)第一單元測(cè)試卷
- 模具保養(yǎng)記錄表
- 2023國家自然科學(xué)基金申請(qǐng)書
- 原始狩獵圖 (2)
- 《色彩構(gòu)成——色彩基礎(chǔ)知識(shí)》PPT課件
- 鍍層的結(jié)合力
- 霍尼韋爾DDC編程軟件(CARE)簡介
評(píng)論
0/150
提交評(píng)論