用Java代碼發送郵件的方法


  注冊某個網站一般都需要郵箱激活:

  注冊后,該網站會給你填寫的郵箱發送一條激活信息,點擊對應的鏈接即可完成激活。

  激活成功后,就可以正常登錄該網站了。

  而該業務就可以通過Java代碼實現:

  關於郵件激活這一塊,老實說本來不打算專門花一晚上時間學習的。

  畢竟這種類型的知識點需要用到的時候相對而言很少,就算遇到了通過網絡也能解決。

  后來我想了想,我能夠通過網絡查詢到別人的教程,那為何不能讓別人查詢我的筆記呢?

  所以還是花了一個晚上的世界來學習,同時也方便自己以后遇到該需求后查看。

  一、Java發送郵箱

  既然是發送郵箱,首先需要一個固定的發件郵箱地址,而這個郵箱要開通POP3服務。

  我這邊使用的是網易提供的郵箱,通過郵箱的設置可以開啟該服務。

  開啟服務后,需要通過手機號驗證;驗證成功會獲得一個授權碼,這個需要記下來。

  有了這個授權碼之后,就可以通過Java代碼發送郵箱了,發件人也就是該郵箱。

  當然發送郵件的技術挺多的,我這邊使用的是apache提供的commons-mail。

  導入該依賴后就可以編寫代碼了。

  ①創建htmlEamil對象

  apache-mail中是使用HtmlEmail這個類來操作郵件的。

  ②配置服務器參數

  setHostName:設定服務器地址。

  setAuthentication:翻譯過來就是認證的意思,所以需要輸入郵箱名和授權碼。

  ③設置發件人和收件人

  setCharset:設定編碼格式為“gb2312”,國家制定的一套標准,gb即國標的拼音縮寫。

  setFrom:這個是設定發件人,也就是上述獲取授權碼的那個郵箱。

  setaddTo:這個是設定收件人,也就是誰注冊就是誰的郵箱,動態獲取,我這邊測試就先用我自己的另一個郵箱代替。

  ④設置郵件的主題和正文

  setSubject:發給用戶的郵件標題,一般都是“XXX網站激活郵件”

  setMsg:發送正文,一般都是“恭喜你,注冊成功!請點擊鏈接激活”,再附帶一個鏈接。

  我這邊先就隨便填一個鏈接作為測試。

  ⑤發送郵件

  send方法發送郵件,見名知意。

  二、發送郵件及測試

  1配置文件封裝

  和jdbc一樣,可以將上述的代碼封裝到一個工具類中,並且關於服務器的配置信息也封裝到一個配置文件中。

  ①通過類加載器加載配置文件

  MailUtil.class.getClassLoader():獲取MailUtil的類加載器。

  getResourceAsStream():翻譯就是以流的方式獲取源文件,參數為配置文件路徑。

  這樣就獲取了該配置文件對應的流。

  ②獲取配置文件中的各個屬性

  load():將對應的流加載進properties。

  getProperty():獲取參數對應的值。

  2發送郵件方法封裝

  將發郵件代碼封裝進一個方法中,通過配置文件,使代碼更具有拓展性。

  在自定義的工具類MailUtil中創建一個靜態方法sendEamil():

  將發送郵件的代碼封裝進該方法中,需要發送郵件時用MailUtil調用sendEamil方法即可。

  其中sendEamil方法有兩個參數:

  userEamil:用戶注冊時填寫的郵箱,也就是收件人的郵箱。

  msg:需要發送給用戶的郵件信息。

  3發送郵件代碼補全

  那什么時候發送郵件呢?

  當用戶激活成功后即可發送郵件:

  在UserServlet中,昨天實現了注冊功能,registerFlag作為結果響應給前端。

  其中如果為true表示注冊成功,以此作為判斷,可以插入一段代碼實現發送郵件的功能。

  注意msg中鏈接的編寫:

  用戶在收到郵箱之后點擊該鏈接,會向userServlet發送一個請求。

  而這個請求是我們需要接受的,所以路徑填寫userServlet,同時攜帶兩個參數:

  methodName:active業務,UserServlet中要有個方法和其對應。

  code:當前用戶的code。

  4注冊頁面測試

  將發送郵件代碼補全后做一個測試,確定是否能夠發送郵件。

  在UserServlet中,昨天實現了注冊功能,registerFlag作為結果響應給前端。

  其中如果為true表示注冊成功,以此作為判斷,可以插入一段代碼實現發送郵件的功能。

  注意msg中鏈接的編寫:

  用戶在收到郵箱之后點擊該鏈接,會向userServlet發送一個請求。

  而這個請求是我們需要接受的,所以路徑填寫userServlet,同時攜帶兩個參數:

  methodName:active業務,UserServlet中要有個方法和其對應。

  code:當前用戶的code。

  4注冊頁面測試

  將發送郵件代碼補全后做一個測試,確定是否能夠發送郵件。

  ①獲取請求中攜帶的數據

  有一個參數code,根據該參數在數據庫中找到對應的用戶並修改其激活狀態。

  ②激活成功

  如果激活成功,重定向到登錄頁面,在此之前先響應一個提示信息提醒用戶。

  response.setHeader()即可實現頁面重定向,其有兩個參數:

  refresh:刷新的意思。

  3;login.html:3即表示為定時3秒再刷新,中間使用分號隔開,login.html即為重新跳轉的頁面。

  ③激活失敗

  原理同上,修改提示信息提醒用戶重新注冊,同時跳轉的頁面是注冊頁面。

  3激活業務實現之service和dao層

  激活業務本身沒有涉及到多少業務邏輯,所以代碼編寫並不多。

  其中對數據庫的操作時修改操作,所以使用template的update方法。

  以上就是對於郵箱激活業務的實現:

  用戶激活成功,就會跳轉登錄頁面。

  用戶激活失敗,就會跳轉注冊頁面,測試階段一般激活失敗可能就是自己編寫的代碼有問題。鄭州試管嬰兒醫院http://yyk.39.net/hospital/fc964_detail.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM