JavaWeb完成郵件發送吸收功效實例解析。本站提示廣大學習愛好者:(JavaWeb完成郵件發送吸收功效實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是JavaWeb完成郵件發送吸收功效實例解析正文
1、郵件開辟觸及到的一些根本概念
1.1、郵件辦事器和電子郵箱
要在Internet上供給電子郵件功效,必需有專門的電子郵件辦事器。例如如今Internet許多供給郵件辦事的廠商:sina、sohu、163等等他們都有本身的郵件辦事器。
這些郵件辦事器相似於實際生涯中的郵局,它重要擔任吸收用戶送達過去的郵件,並把郵件送達到郵件吸收者的電子郵箱中。
電子郵箱(E-Mail地址)的取得須要在郵件辦事器長進行請求,確實地說,電子郵箱其實就是用戶在郵件辦事器上請求的一個賬戶,用戶在郵件辦事器上請求了一個帳號後,郵件辦事器就會為這個賬號分派必定的空間,用戶從而可使用這個帳號和空間發送電子郵件和保留他人發送過去的電子郵件。
1.2、郵件傳輸協定
1.2.1、SMTP協定
用戶銜接上郵件辦事器以後,要想給它發送一封電子郵件,須要遵守必定的通信規矩,SMTP協定就是用來界說這類通信規矩的。是以,我們平日也把處置用戶smtp要求(郵件發送要求)的辦事器稱之為SMTP辦事器(郵件發送辦事器)。
1.2.2、POP3協定
異樣,用戶若想從郵件辦事器治理的電子郵箱傍邊吸收一封電子郵件話,它連上郵件辦事器後,也要遵守必定的通信格局,POP3協定就是用來界說這類通信格局的。是以,我們平日也把處置用戶pop3要求(郵件吸收要求)的辦事器稱之為POP3辦事器(郵件吸收辦事器)。
1.3、電子郵件的發送和吸收進程
經由過程一張圖來講明一封郵件的發送和吸收進程,以下圖所示:
簡略說一下這個郵件收發進程:
1、[email protected]用戶寫好一封Email發送到sohu的Smtp辦事器。對應於上圖的步調①
2、sohu的Smtp辦事器開端處置[email protected]用戶的要求,它會依據收件人的地址斷定,以後收件人是否是本身管轄的用戶,假如是,就直接將Email寄存到為該收件人的分派的郵箱空間傍邊。sohu的Smtp辦事器斷定收件人地址發明,這一封Email的收件人[email protected] 是Sina的郵件辦事器治理的,因而又將Email轉發給Sina的Smtp辦事器。對應於上圖的步調②
3、Sina的Smtp辦事器開端處置sohu的Smtp辦事器發送過去的Email,Sina的Smtp辦事器依據收件人的地址斷定,發明收件人本身管轄的用戶,因而就直接將Email寄存到為[email protected]用戶的分派的郵箱空間傍邊。對應於上圖的步調③。
4、[email protected]用戶將郵件收回去以後,就告訴[email protected]用戶去收取。[email protected]用戶因而就銜接上Sina的POP3辦事器收取郵件,對應於上圖的步調④。
5、POP3辦事器從[email protected]用戶的郵箱空間傍邊掏出Email,對應於步調⑤。
6、POP3辦事器將掏出來的Email發給[email protected]用戶,對應於步調⑥。
2、應用Smtp協定發送郵件
2.1、Smtp協定講授
應用smtp協定發送郵件給郵件辦事器時劃定了要做以下幾件事
1、應用"ehlo"敕令和銜接上的smtp辦事器打聲召喚,例如:
ehlo gacl
2、應用"auth login"敕令登錄到Smtp辦事器,登錄應用的用戶名和暗碼必需經由Base64加密,例如:
①、輸出敕令:auth login
②、輸出應用Base64加密事後的用戶名:Z2FjbA==
③、輸出Base64加密事後的暗碼:MTIzNDU2
3、指明郵件的發件人和收件人
mail from:<[email protected]>
rcpt to:<[email protected]>
4、編寫要發送的郵件內容,郵件的編寫格局是有必定的規矩的,一封格局優越的郵件應當包括郵件頭和郵件的主體內容。
郵件頭應用上面的三個字段來指明
郵件的內容包括了這些信息以後才是一封格局優越的郵件。
①、輸出"data"敕令
data
②、編寫郵件內容
from:<[email protected]> ----郵件頭
to:<[email protected]> ----郵件頭
subject:hello ----郵件頭
-----空行
hello gacl ----郵件的詳細內容
5、輸出一個.告知郵件辦事器郵件內容曾經寫完了 .
6、輸出quit敕令斷開與郵件辦事器的銜接
以上的6個步調就是Smtp協定劃定的發送一封Email必需要做的工作。
2.2、應用Smtp協定手工發送郵件
在對Smtp協定有必定的懂得以後,我們便可以應用Smtp協定來發送郵件了。上面演示一下應用Telnet客戶端銜接上搜狐的郵件辦事器然後發一封Email到新浪的郵箱中去
為了可以或許對Smtp協定有一個直不雅的熟悉,這裡我們不借助任何第三方郵件客戶端對象,而是應用最原始的的Telnet客戶端來完成郵件的發送進程,Telnet是一個Window自帶的收集客戶端法式,經由過程它可以銜接上互聯網下面的隨意率性一台主機。
應用telnet客戶端銜接到搜狐的smtp辦事器,以下圖所示:
經由過程telnet客戶端發Email,以下圖所示:
我們登錄到<[email protected]>郵箱傍邊,便可以收取到由<[email protected]>發送的Email了,以下圖所示:
這就是應用Smtp協定發送郵件的進程。
3、應用POP3協定吸收郵件
3.1、POP3協定講授
POP3協定劃定了收取郵件時要做以下幾件事
①、輸出用戶名和暗碼登錄到POP3辦事器,用戶名和暗碼不須要經由Base64加密
user username --登錄郵箱的用戶名
pass password --登錄郵箱應用的暗碼
②、應用retr敕令收取郵件
retr 數字 收取郵件,retr 1表現收取郵箱傍邊的第一封郵件,這是POP3協定外面最主要的一個敕令。
在應用retr敕令收取郵件之前,可使用以下的兩個敕令檢查一下郵箱外面的郵件的一些相干信息。
stat
前往郵箱外面的郵件數目和郵件占用的空間年夜小信息
list 數字
前往某一封郵件的統計信息
③、郵件收取完成以後應用quit敕令斷開與POP3辦事器的銜接。
quit 斷開與POP3辦事器的銜接
3.2、應用POP3協定手工吸收郵件
收取郵件我們也不借助任何第三方客戶端對象,而是應用Telnet客戶端銜接到POP3辦事器停止收取。
例如:如今我的搜狐郵箱傍邊有如許的一封郵件,以下圖所示:
如今我們不消應用foxmail或許outLook如許的客戶端對象去收取,而是應用Telnet客戶端銜接到搜狐的POP3辦事器去手工收取。
1、應用Telnet銜接上搜狐的POP3辦事器,應用敕令:telnet pop3.sohu.com 110,以下圖所示:
依據POP3協定劃定的郵件收取步調來收取郵件。以下圖所示:
可以看到,我們POP3協定純手工從搜狐的POP3辦事器傍邊收取回來了一封Email,Email外面的內容都經由了Base64編碼處置,上面我們寫一個小法式將經由Base64編碼後的郵件內容停止解碼,復原回郵件的內容,代碼以下
package me.gacl.encrypt; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class Base64Encrypt { public static void main(String args[]) throws IOException{ /*System.out.print("請輸出用戶名:"); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String userName = in.readLine(); System.out.print("請輸出暗碼:"); String password = in.readLine(); BASE64Encoder encoder = new BASE64Encoder(); System.out.println("編碼後的用戶名為:" + encoder.encode(userName.getBytes())); System.out.println("編碼後的暗碼為:" + encoder.encode(password.getBytes()));*/ BASE64Decoder decoder = new BASE64Decoder(); //郵件主題的Base64編碼 String emailSubject = "=?GBK?B?08q8/rLiytQ=?="; //郵件文本內容的Base64編碼 String emailPlainContent = "vPK1pbXE08q8/reiy82y4srUo6E="; //帶html標簽和郵件內容的Base64編碼 String emailHtmlContent = "PFA+vPK1pbXE08q8/reiy82y4srUo6E8L1A+"; //將應用Base64編碼事後的文本內容再應用Base64來解碼 emailSubject = new String(decoder.decodeBuffer(emailSubject),"GBK"); emailPlainContent = new String(decoder.decodeBuffer(emailPlainContent),"GBK"); emailHtmlContent = new String(decoder.decodeBuffer(emailHtmlContent),"GBK"); System.out.println("郵件題目:"+emailSubject); System.out.println("郵件內容:"+emailPlainContent); System.out.println("帶html標簽的郵件內容:"+emailHtmlContent); } }
運轉成果以下:
這就是應用POP3協定收取郵件的進程。
以上就是郵件的發送與吸收道理的相干內容,這一篇文章重要是引見郵件發送和吸收進程中應用到的smtp協定和pop3協定。沒有觸及到太多代碼方面的器械,前面會詳細引見應用JavaMail來停止郵件發送,點擊這篇文章:《JavaWeb中JavaMail創立郵件和發送郵件》。
關於JavaWeb完成郵件發送吸收功效的內容就這麼多。