java網(wǎng)上商城開發(fā)之郵件發(fā)送功能(全)
最近在學(xué)習(xí)網(wǎng)上商城時(shí),接觸到了一個(gè)郵件發(fā)送的功能。之前一直在使用郵箱進(jìn)行發(fā)送郵件,但是其中的具體如何運(yùn)轉(zhuǎn)的卻不知道是怎么回事。那么郵件發(fā)送究竟是怎么一回事呢?
郵件發(fā)送過(guò)程:
過(guò)程描述:首先是發(fā)送人將郵件通過(guò)客戶端軟件發(fā)送到特定的服務(wù)器上,然后通過(guò)電子郵件簡(jiǎn)單傳輸協(xié)議(SMTP)來(lái)進(jìn)行傳輸,收件人通過(guò)POP3協(xié)議將郵件從服務(wù)器上接受回來(lái)。這樣就實(shí)現(xiàn)了郵件之間的相互傳送。
實(shí)現(xiàn)過(guò)程:
在有網(wǎng)絡(luò)的情況下,我們可以直接使用搜狐、網(wǎng)易等郵箱進(jìn)行發(fā)送。那么如何在沒有網(wǎng)絡(luò)的情況下,實(shí)現(xiàn)內(nèi)部之間的發(fā)送呢?
首先需要安裝配置一個(gè)服務(wù)器,視頻中使用的是易郵郵件服務(wù)器,該軟件的安裝比較簡(jiǎn)單,安裝成功之后會(huì)有一個(gè)失敗提示,如下:
該問(wèn)題沒有影響(暫時(shí)還沒有遇到什么問(wèn)題)我們的功能,可以忽略。安裝完成之后需要對(duì)其進(jìn)行一些配置。先進(jìn)行服務(wù)器設(shè)置,打開工具——>服務(wù)器設(shè)置:設(shè)置自己服務(wù)器地址的域名(類似于我們使用的網(wǎng)易郵箱的域名@后的163.com)
然后添加新賬號(hào):設(shè)置名稱和密碼
添加之后的效果如下:
服務(wù)器配置完成之后,進(jìn)行客戶端的安裝與配置,因?yàn)楸緳C(jī)已經(jīng)安裝了foxmail的最新版本,為了不造成混亂,所以用foxmail6.5進(jìn)行設(shè)置,其中安裝過(guò)程不再敘述。
首先要新添加用戶賬戶(如果在安裝過(guò)程中已經(jīng)設(shè)置了測(cè)試的用戶就不用再添加),填入測(cè)試的賬戶,如下:
點(diǎn)擊下一步,設(shè)置服務(wù)類型和服務(wù)器,這里需要注意服務(wù)器的配置,由于自己是在本地進(jìn)行郵件傳送,所以發(fā)、送郵件服務(wù)器都設(shè)置為本地:localhost。
設(shè)置好之后,下一步,進(jìn)行測(cè)試:
成功之后即可關(guān)閉配置,此時(shí)配置基本上就完成了
在此次配置過(guò)程中需要注意:
1、配置服務(wù)器的域名,并且添加一些賬戶
2、配置客戶端時(shí),注意接收服務(wù)器地址的設(shè)置、服務(wù)器類型等問(wèn)題。
至此,我們發(fā)送郵件所需要的環(huán)境已經(jīng)配置完成,具體的代碼實(shí)現(xiàn)過(guò)程,將在下篇進(jìn)行詳細(xì)介紹。通過(guò)這次的學(xué)習(xí),了解了郵件服務(wù)的基本原理,知道了我們平常發(fā)送郵件的過(guò)程。同時(shí),也讓自己對(duì)一些服務(wù)器設(shè)置、域名及類型有了新的認(rèn)識(shí),之前也曾遇到過(guò)foxmail無(wú)法工作的問(wèn)題,現(xiàn)在基本上知道其問(wèn)題處在何處了。知識(shí),總是在不斷的實(shí)踐中獲得的,而且是需要不斷的反復(fù)學(xué)習(xí)和鍛煉。
以上基本上將發(fā)送的原理說(shuō)了一下,以及如何進(jìn)行配置郵件服務(wù)。下面主要說(shuō)一下發(fā)送郵件的一些具體的實(shí)現(xiàn)過(guò)程。
代碼實(shí)現(xiàn)發(fā)送過(guò)程主要分為三個(gè)步驟:
第一步是獲得連接,通過(guò)java中的Properties類來(lái)進(jìn)行讀取配置文件,調(diào)用基類的一些方法進(jìn)行基礎(chǔ)的設(shè)置以及連接設(shè)置。
// 1、獲得連接 Properties props=new Properties();//Properties是java中的一個(gè)重要的類,主要用于讀取java的配置文件 //設(shè)置連接的服務(wù)器 props.setProperty("mail.host", "localhost");//調(diào)用Hashtable的方法put,通過(guò)調(diào)用基類的put方法來(lái)設(shè)置鍵值對(duì) Session session=Session.getInstance(props, new Authenticator(){ @Override protected PasswordAuthentication getPasswordAuthentication() { // TODO Auto-generated method stub //設(shè)置自己的服務(wù)郵件地址和密碼 return new PasswordAuthentication("service@pengbo.com","1"); } });
第二步是進(jìn)行創(chuàng)建郵件對(duì)象,主要是通過(guò)Message這個(gè)載體進(jìn)行封裝信息,Message是一個(gè)抽象類,已知的實(shí)現(xiàn)類有MimeMessage。
// 2、創(chuàng)建郵件對(duì)象 Message message=new MimeMessage(session); // 設(shè)置發(fā)送人 try { //設(shè)置服務(wù)端 message.setFrom(new InternetAddress("service@pengbo.com")); // 設(shè)置收件人 message.addRecipient(RecipientType.TO, new InternetAddress(to)); // 設(shè)置標(biāo)題 message.setSubject("購(gòu)物激活郵件"); // 設(shè)置郵件正文 message.setContent("<h1>購(gòu)物激活郵件,點(diǎn)下面鏈接完成激活操作!</h1><h3><a >http://192.168.21.84:8080/shop/user_active.action?code="+code+"</a></h3>", "text/html;charset=UTF-8");
第三步是發(fā)送郵件
// 3、發(fā)送郵件 Transport.send(message); 這樣發(fā)送郵件的主要流程就實(shí)現(xiàn)了,然后在此類中定義主方法: public static void main(String[] args){ //要發(fā)送的對(duì)象及驗(yàn)證碼 sendMail("a@pengbo.com","11111111"); } 在Service層進(jìn)行調(diào)用郵件發(fā)送的方法即可: // 發(fā)送激活郵件 MailUitls.sendMail(user.getEmail(), code);
具體的知識(shí)積累:
1、Properties 主要獲取配置文件信息,主要的方法有g(shù)etProperty ( String key)、load ( InputStream inStream)、setProperty ( String key, String value)、store ( OutputStream out, String comments)、clear ()
2、Session 是一對(duì)配置信息的集合,主要作用是接收各種配置屬性信息,初始化JavaMail環(huán)境
3、Message 是一個(gè)抽象類,它實(shí)現(xiàn)接口Part,并定義了一些屬性
4、transport是指?jìng)鬏斷]件,與之對(duì)應(yīng)的是store存儲(chǔ)功能。
功能雖然實(shí)現(xiàn)了,但是其中用到的一些類還需要進(jìn)行深入的學(xué)習(xí)和研究。就目前而言,僅僅有了一個(gè)入門,知道了在JavaMail中,有Properties、Session、Message這幾個(gè)重要的類。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- Java 實(shí)戰(zhàn)項(xiàng)目之家居購(gòu)物商城系統(tǒng)詳解流程
- Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)
- Java實(shí)現(xiàn)商城訂單超時(shí)取消功能
- java商城項(xiàng)目實(shí)戰(zhàn)之購(gòu)物車功能實(shí)現(xiàn)
- JAVAWEB實(shí)現(xiàn)簡(jiǎn)單的商城項(xiàng)目(一)實(shí)例代碼解析
- JavaWeb搭建網(wǎng)上圖書商城畢業(yè)設(shè)計(jì)
- 使用java采集京東商城行政區(qū)劃數(shù)據(jù)示例
- Java 實(shí)戰(zhàn)項(xiàng)目錘煉之網(wǎng)上商城系統(tǒng)的實(shí)現(xiàn)流程
相關(guān)文章
eclipse+myeclipse 環(huán)境配置方法
eclipse+myeclipse配置環(huán)境2009-07-07基于kafka實(shí)現(xiàn)Spring Cloud Bus消息總線
消息總線是一種通信工具,可以在機(jī)器之間互相傳輸消息、文件等,這篇文章主要介紹了如何利用kafka實(shí)現(xiàn)SpringCloud Bus消息總線,感興趣的可以學(xué)習(xí)一下2022-04-04基于hibernate實(shí)現(xiàn)的分頁(yè)技術(shù)實(shí)例分析
這篇文章主要介紹了基于hibernate實(shí)現(xiàn)的分頁(yè)技術(shù),結(jié)合實(shí)例形式分析了Hibernate分頁(yè)技術(shù)的原理,實(shí)現(xiàn)步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03SpringBoot3中數(shù)據(jù)庫(kù)集成實(shí)踐詳解
項(xiàng)目工程中,集成數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的增曬改查管理,是最基礎(chǔ)的能力,所以下面小編就來(lái)和大家講講SpringBoot3如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)集成,需要的可以參考下2023-08-08如何在Java SpringBoot項(xiàng)目中配置動(dòng)態(tài)數(shù)據(jù)源你知道嗎
這篇文章主要介紹了SpringBoot如何在運(yùn)行時(shí)動(dòng)態(tài)添加數(shù)據(jù)源,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09NetBeans安裝提示neatbeans cannot find java 1.8 or higher
今天小編就為大家分享一篇關(guān)于NetBeans安裝提示neatbeans cannot find java 1.8 or higher,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04Java8使用Stream流實(shí)現(xiàn)List列表查詢、統(tǒng)計(jì)、排序以及分組
List的Stream流操作可以簡(jiǎn)化我們的代碼,減少程序運(yùn)行的壓力,應(yīng)對(duì)上面的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Java8使用Stream流實(shí)現(xiàn)List列表查詢、統(tǒng)計(jì)、排序以及分組的相關(guān)資料,需要的朋友可以參考下2023-06-06SpringBoot集成ElaticJob定時(shí)器的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot集成ElaticJob定時(shí)器的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Win10系統(tǒng)下配置java環(huán)境變量的全過(guò)程
這篇文章主要給大家介紹了關(guān)于Win10系統(tǒng)下配置java環(huán)境變量的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11被遺忘的Java關(guān)鍵字transient的使用詳解
在 Java 中,transient 是一個(gè)關(guān)鍵字,用于指定一個(gè)類的字段(成員變量)在序列化時(shí)應(yīng)該被忽略。本文將通過(guò)示例為大家簡(jiǎn)單講講transient的使用,需要的可以參考一下2023-04-04