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