最近在學習網上商城時,接觸到了一個郵件發送的功能。之前一直在使用郵箱進行發送郵件,但是其中的具體如何運轉的卻不知道是怎么回事。那么郵件發送究竟是怎么一回事呢?
郵件發送過程:
過程描述:首先是發送人將郵件通過客戶端軟件發送到特定的服務器上,然后通過電子郵件簡單傳輸協議(SMTP)來進行傳輸,收件人通過POP3協議將郵件從服務器上接受回來。這樣就實現了郵件之間的相互傳送。
實現過程:
在有網絡的情況下,我們可以直接使用搜狐、網易等郵箱進行發送。那么如何在沒有網絡的情況下,實現內部之間的發送呢?
首先需要安裝配置一個服務器,視頻中使用的是易郵郵件服務器,該軟件的安裝比較簡單,安裝成功之后會有一個失敗提示,如下:
該問題沒有影響(暫時還沒有遇到什么問題)我們的功能,可以忽略。安裝完成之后需要對其進行一些配置。先進行服務器設置,打開工具——>服務器設置:設置自己服務器地址的域名(類似于我們使用的網易郵箱的域名@后的163.com)
然后添加新賬號:設置名稱和密碼
添加之后的效果如下:
服務器配置完成之后,進行客戶端的安裝與配置,因為本機已經安裝了foxmail的最新版本,為了不造成混亂,所以用foxmail6.5進行設置,其中安裝過程不再敘述。
首先要新添加用戶賬戶(如果在安裝過程中已經設置了測試的用戶就不用再添加),填入測試的賬戶,如下:
點擊下一步,設置服務類型和服務器,這里需要注意服務器的配置,由于自己是在本地進行郵件傳送,所以發、送郵件服務器都設置為本地:localhost。
設置好之后,下一步,進行測試:
成功之后即可關閉配置,此時配置基本上就完成了
在此次配置過程中需要注意:
1、配置服務器的域名,并且添加一些賬戶
2、配置客戶端時,注意接收服務器地址的設置、服務器類型等問題。
至此,我們發送郵件所需要的環境已經配置完成,具體的代碼實現過程,將在下篇進行詳細介紹。通過這次的學習,了解了郵件服務的基本原理,知道了我們平常發送郵件的過程。同時,也讓自己對一些服務器設置、域名及類型有了新的認識,之前也曾遇到過foxmail無法工作的問題,現在基本上知道其問題處在何處了。知識,總是在不斷的實踐中獲得的,而且是需要不斷的反復學習和鍛煉。
以上基本上將發送的原理說了一下,以及如何進行配置郵件服務。下面主要說一下發送郵件的一些具體的實現過程。
代碼實現發送過程主要分為三個步驟:
第一步是獲得連接,通過java中的Properties類來進行讀取配置文件,調用基類的一些方法進行基礎的設置以及連接設置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 1、獲得連接 Properties props= new Properties(); //Properties是java中的一個重要的類,主要用于讀取java的配置文件 //設置連接的服務器 props.setProperty( "mail.host" , "localhost" ); //調用Hashtable的方法put,通過調用基類的put方法來設置鍵值對 Session session=Session.getInstance(props, new Authenticator(){ @Override protected PasswordAuthentication getPasswordAuthentication() { // TODO Auto-generated method stub //設置自己的服務郵件地址和密碼 return new PasswordAuthentication( "service@pengbo.com" , "1" ); } }); |
第二步是進行創建郵件對象,主要是通過Message這個載體進行封裝信息,Message是一個抽象類,已知的實現類有MimeMessage。
1
2
3
4
5
6
7
8
9
10
11
12
|
// 2、創建郵件對象 Message message= new MimeMessage(session); // 設置發送人 try { //設置服務端 message.setFrom( new InternetAddress( "service@pengbo.com" )); // 設置收件人 message.addRecipient(RecipientType.TO, new InternetAddress(to)); // 設置標題 message.setSubject( "購物激活郵件" ); // 設置郵件正文 message.setContent( "<h1>購物激活郵件,點下面鏈接完成激活操作!</h1><h3><a href='http://192.168.21.84:8080/shop/user_active.action?code=" +code+ " '>http://192.168.21.84:8080/shop/user_active.action?code=" +code+ "</a></h3>" , "text/html;charset=UTF-8" ); |
第三步是發送郵件
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 3、發送郵件 Transport.send(message); 這樣發送郵件的主要流程就實現了,然后在此類中定義主方法: public static void main(String[] args){ //要發送的對象及驗證碼 sendMail( "a@pengbo.com" , "11111111" ); } 在Service層進行調用郵件發送的方法即可: // 發送激活郵件 MailUitls.sendMail(user.getEmail(), code); |
具體的知識積累:
1、Properties 主要獲取配置文件信息,主要的方法有getProperty ( String key)、load ( InputStream inStream)、setProperty ( String key, String value)、store ( OutputStream out, String comments)、clear ()
2、Session 是一對配置信息的集合,主要作用是接收各種配置屬性信息,初始化JavaMail環境
3、Message 是一個抽象類,它實現接口Part,并定義了一些屬性
4、transport是指傳輸郵件,與之對應的是store存儲功能。
功能雖然實現了,但是其中用到的一些類還需要進行深入的學習和研究。就目前而言,僅僅有了一個入門,知道了在JavaMail中,有Properties、Session、Message這幾個重要的類。
以上就是本文的全部內容,希望對大家的學習有所幫助。