資源描述:
《張孝祥Java郵件開(kāi)發(fā)詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第3課時(shí)關(guān)于郵件的理論以及通過(guò)cmdtelnet到服務(wù)器發(fā)送和接受郵件(這一課時(shí)很重要)其實(shí)郵件服務(wù)器就類(lèi)似于郵局,發(fā)送方發(fā)到自己選擇的郵件服務(wù)器,然后郵件服務(wù)器發(fā)送到目標(biāo)服務(wù)器,目標(biāo)服務(wù)器接收郵件,然后目標(biāo)去目標(biāo)服務(wù)器接受郵件。這這個(gè)過(guò)程中必須注意,除了用戶(hù)取郵件用的是POP3協(xié)議,發(fā)送郵件到自己選擇的服務(wù)器和自己這邊的服務(wù)器轉(zhuǎn)郵件到目標(biāo)服務(wù)器之間用到的協(xié)議都是SMTP協(xié)議。只有用戶(hù)主動(dòng)去取郵件的時(shí)候才是POP3協(xié)議。每個(gè)郵箱就相當(dāng)于我們?nèi)⌒诺暮桶l(fā)信的郵局提供的郵件箱一樣。我們的每個(gè)申請(qǐng)的郵箱賬號(hào),其實(shí)就是一個(gè)郵件箱,在郵件服務(wù)器上
2、建立了一個(gè)賬號(hào)和空間,郵件會(huì)放著這個(gè)服務(wù)器給我們開(kāi)的賬戶(hù)的空間里。郵件服務(wù)器按通訊協(xié)議分為兩種類(lèi)型SMTP服務(wù)器POP3/IMAP服務(wù)器發(fā)送郵件或者是將郵件轉(zhuǎn)發(fā)給另外一個(gè)郵件服務(wù)器就是用SMTP協(xié)議。如果用戶(hù)去取郵件,使用的協(xié)議就是POP3協(xié)議Smtp服務(wù)器端口號(hào)是:25Pop3服務(wù)器端口號(hào)是:110Smtp服務(wù)器登陸,首先需要先使用base64格式編碼用戶(hù)名和密碼,然后登陸服務(wù)器時(shí)輸入編碼后的用戶(hù)名與密碼給服務(wù)器驗(yàn)證才會(huì)通過(guò),而pop3服務(wù)器登陸是不需要使用base64編碼的,直接輸入原來(lái)的用戶(hù)名和密碼。Telnetmail.sin
3、a.com.cn:25第四課時(shí)發(fā)送郵件的原理(相當(dāng)重要)一定要注意,其實(shí)在cmd中和smtp服務(wù)器交流的時(shí)候,郵件和服務(wù)器之間的關(guān)系。在寫(xiě)郵件之前,需要先定義mailfrom<>和rcptto<>,這個(gè)是專(zhuān)門(mén)和服務(wù)器打交道,由服務(wù)器識(shí)別的。而在寫(xiě)郵件的時(shí)候,郵件分兩部分,一個(gè)是郵件頭,一個(gè)是郵件內(nèi)容(從‘data’表示內(nèi)容開(kāi)始,data之后是全部的內(nèi)容,以一個(gè)‘.’表示郵件內(nèi)容結(jié)束),內(nèi)容部分的頭部分又需要再寫(xiě)一個(gè)from:<>,這里面寫(xiě)郵件的發(fā)件人,可以是開(kāi)始的mailfrom也可以是另外一個(gè)郵箱名字。這個(gè)郵件頭,服務(wù)器是不檢查的,
4、是給郵件閱讀程序看的,所以發(fā)出去之后,在客戶(hù)端郵件閱讀程序(outlook)中我們看到的發(fā)件人實(shí)際上是郵件頭上面寫(xiě)的發(fā)件人,而不是登陸郵箱的發(fā)件人的郵箱。一定要注意這點(diǎn)。所以有的郵件中看到發(fā)件人的名字是unknown,就是因?yàn)猷]件頭中沒(méi)有輸入發(fā)件人的名字。內(nèi)容需要寫(xiě)from,to,subject,date,然后才是正式的正文其實(shí)就相當(dāng)于我們自己寫(xiě)了一封信,但是信上面的發(fā)信人不是寫(xiě)自己的名字,而是別人的名字,冒充別人,收件人是沒(méi)辦法區(qū)分發(fā)件人的真實(shí)身份的。如果是普通的客戶(hù)端訪問(wèn)smtp服務(wù)器是需要用戶(hù)名和密碼的,而針對(duì)各個(gè)smtp服務(wù)器
5、之間,是不需要用戶(hù)名和密碼的,否則的話(huà),smtp服務(wù)器是不可能知道那么多smtp服務(wù)器用戶(hù)名和密碼的。實(shí)際上sina或者是其他郵件服務(wù)器提供商(smtpserver)都是分為兩塊的,也就是有兩種服務(wù)器,一種是專(zhuān)門(mén)給普通用戶(hù)訪問(wèn)的郵件服務(wù)器,一種是給其他郵件服務(wù)器供應(yīng)商訪問(wèn)的郵件服務(wù)器。如果是普通用戶(hù)訪問(wèn)的郵件服務(wù)器,那么用戶(hù)訪問(wèn)的時(shí)候就需要提供用戶(hù)名和密碼,而其他郵件服務(wù)器供應(yīng)商訪問(wèn)的專(zhuān)門(mén)的郵件服務(wù)器,是不需要用戶(hù)名密碼的。直接訪問(wèn)。服務(wù)器提供商會(huì)將專(zhuān)門(mén)給其他郵件服務(wù)器供應(yīng)商訪問(wèn)的郵件服務(wù)器加入到DNS中,這樣當(dāng)系統(tǒng)查到這個(gè)訪問(wèn)的地址
6、來(lái)自于DNS的其他郵件服務(wù)器,就會(huì)認(rèn)為對(duì)方是郵件服務(wù)器,允許它不需要服務(wù)器密碼直接訪問(wèn)這個(gè)郵件服務(wù)器。而專(zhuān)給個(gè)人客戶(hù)訪問(wèn)的郵件服務(wù)器則是不能夠加入DNS的,否則其他郵件服務(wù)器訪問(wèn)sina.cn時(shí),有可能找到的是這個(gè)專(zhuān)用個(gè)人訪問(wèn)郵件服務(wù)器,那么就會(huì)需要其他郵件服務(wù)器輸入用戶(hù)密碼,導(dǎo)致其他郵件服務(wù)器無(wú)法登陸,郵件服務(wù)器之間無(wú)法互相轉(zhuǎn)發(fā)郵件。由于垃圾郵件泛濫,所以,現(xiàn)在網(wǎng)站提供的smtp服務(wù)器都要求提供身份驗(yàn)證,這就要求你在客戶(hù)端軟件(outlook)中的賬戶(hù)配置的服務(wù)器選項(xiàng)中,發(fā)送郵件服務(wù)器欄目中選中我的服務(wù)器要求身份驗(yàn)證,這樣,服務(wù)器驗(yàn)
7、證了身份才會(huì)和幫用戶(hù)發(fā)送郵件。第5課時(shí)解釋JavaMail包JavaMailAPI按功能分為以下三大類(lèi)1.創(chuàng)建和解析郵件內(nèi)容的API:Message類(lèi)是創(chuàng)建和解析郵件的核心API,它的實(shí)力對(duì)象代表一封電子郵件。2.發(fā)送郵件的API:Transport類(lèi)是發(fā)送郵件的核心API類(lèi),它的實(shí)例對(duì)象代表實(shí)現(xiàn)了某個(gè)郵件接收協(xié)議的郵件發(fā)送對(duì)象,例如SMTP協(xié)議3.接收郵件的API:Store類(lèi)是接收郵件核心API類(lèi),它的實(shí)例對(duì)象代表實(shí)現(xiàn)了某個(gè)郵件接收協(xié)議的郵件接收對(duì)象,例如POP3協(xié)議Session類(lèi):是用于定義整個(gè)應(yīng)用環(huán)境信息的,以及收集客戶(hù)端與
8、郵件服務(wù)器建立網(wǎng)絡(luò)連接的會(huì)話(huà)信息。如郵件服務(wù)器的主機(jī)名,端口號(hào),采用的郵件發(fā)送和接收協(xié)議等。其實(shí)JavaMail是分為兩部分,一部分是接口包,一部分是實(shí)現(xiàn)類(lèi)包。Mailapi.jar其實(shí)就是一個(gè)接口包,里面是沒(méi)有實(shí)現(xiàn)的,