1.通過登錄驗證的方式以獲取session對象
javaMail是一個以實現(xiàn)SMTP驗證類(重寫抽象類Authenticator的抽象方法PasswordAuthentication)來獲取Session的解決方案舶替,獲取session之后霜幼,就可以得到一個基于mine協(xié)議的對象踩身,從而進行郵件的操作芙委。
下面是一個簡單的EailUtil封裝格式:
這樣就完成了基本的發(fā)送郵件的驗證步驟的內(nèi)容寞宫,下面來使用他,因為這個工具是在實際項目中使用的敏沉,所以隱藏部分代碼初厚,核心代碼會一一備注。
2.創(chuàng)建一個Session連接郵件服務(wù)
在創(chuàng)建session之前郑叠,我們需要傳輸一些相關(guān)的參數(shù)給這次的會話連接夜赵,之后通過圖中的方式獲取session對象。
這里建議開啟debug模式锻拘,設(shè)置session.setDebug(true)即可油吭,開啟后控制臺會輸出日志信息,也可以觀察服務(wù)器的響應(yīng)信息署拟。
3.創(chuàng)建一個基于mine協(xié)議的MineMessage郵件對象
mineMessage對象是郵件的載體婉宰,封裝著郵件的所有信息。
通過new MineMessage(session)的方式得到該對象推穷,參數(shù)為session會話連接對象心包。
4.創(chuàng)建一封郵件
郵件包含了幾大基本要素:
(1)發(fā)件人
(2)收件人/抄送人/暗送人
(3)回復(fù)人
(4)標題
(5)正文內(nèi)容
發(fā)件人和收件人在javamail中,使用Address類表示馒铃,它是一個抽象類蟹腾,已知實現(xiàn)子類有IntenetAddress
圖中紅色標注的方法就是設(shè)置郵件的收件人/抄送人/暗送人,其中T0為收件人区宇,CC為抄送人娃殖,BCC為暗送人
對于回復(fù)人來說,我并沒有在項目中使用议谷,網(wǎng)上應(yīng)該有相關(guān)的設(shè)置方法炉爆,需要使用的可以百度一下(百度就完事了)。
我們還可以設(shè)置一些其他的東西卧晓,比如
對于message中很多的方法都是設(shè)置郵件的一些信息芬首,可以參考API。
正文內(nèi)容逼裆,也是郵件最重要的一個方面郁稍,包含了郵件傳達的信息主體,這里正文內(nèi)容包括了文字信息胜宇,圖片以及附件耀怜。
先要獲取一個Multipart對象,該對象是郵件正文總體的數(shù)據(jù)封裝對象掸屡,之后創(chuàng)建一個BodyPart對象封寞,他封裝了郵件正文體包含的正文信息,在一個Multipart中仅财,我們可以add多個BodyPart從而組成一封完整的郵件狈究。
這里添加了郵件正文(圖中的sendHtml),在設(shè)置之前需要設(shè)置HTML的編碼方式盏求,默認忘了是什么格式了(抖锥。。碎罚。),一定要記住磅废,在封裝完BodyPart對象所承載的數(shù)據(jù)之后,調(diào)用multipart.addBodyPart()來將該BodyPart添加到郵件正文中荆烈。
因為代碼中沒有使用附件的需求拯勉,所以寫了一個附件的基本的操作方法
也是和上邊的文字信息差不多的操作竟趾,區(qū)別是需要用DataSource對象存儲文件內(nèi)容,已知實現(xiàn)類為FileDataSource宫峦,之后調(diào)用BodyPart的setDataHandler給這個數(shù)據(jù)封裝體封裝附件信息岔帽,最后將它添加至multipart中即可。
最后导绷,一定要將Multipart對象添加至郵件對象中
5.發(fā)送郵件
發(fā)送之前先保存郵件犀勒,之后調(diào)用Transport.send()即可發(fā)送,參數(shù)分別為message(郵件體對象)和address(收件人郵箱地址)妥曲,這里還給大家寫了一段不采用SSL加密的發(fā)送方式贾费,但是一般來說在企業(yè)中都是采用的,所以也不和大家詳細敘述了檐盟,有興趣的朋友可以研究研究褂萧。