日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

慕课网_《Java实现邮箱验证》学习总结

發布時間:2023/12/31 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 慕课网_《Java实现邮箱验证》学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

時間:2017年06月07日星期三
說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com
教學示例源碼:無
個人學習源碼:https://github.com/zccodere/s...

第一章:課程介紹

1-1 課程內容介紹

課程內容

理解郵件開發涉及的基本概念 了解SMTP和POP3協議 掌握配置Foxmail 掌握JavaMail發送簡單郵件

第二章:郵件相關概念介紹

2-1 JavaMail的概述

JavaMail

JavaMail,顧名思義,提供給開發者處理電子郵件相關的編程接口。它是Sun發布的用來處理email的API。它可以方便地執行一些常用的郵件傳輸。我們可以基于JavaMail開發出類似于Microsoft Outlook的應用程序。

為什么要學習JavaMail

現在很多的WEB開發都需要使用JavaMail,例如: 1.用戶注冊后,網站發送一封激活郵件驗證。 2.用戶過生日,系統發送生日祝福郵件。 3.將最新活動和優惠以郵件的形式告知會員。 這些應用都需要開發人員會使用編程語言發送郵件。

2-2 郵件開發中的相關的術語

電子郵箱

電子郵箱(E-mail地址)需要在郵件服務器上進行申請,確切地說,電子郵箱其實就是用戶在郵件服務器上申請的一個賬戶。用戶在郵件服務器上申請了一個賬戶后,郵件服務器就會為這個賬號分配一定的空間,用戶從而可以使用這個賬號以及空間,發送電子郵件和保存別人發送過來的電子郵件。

郵箱服務器

服務器的概念不難理解,應為作為WEB開發人員我們應該更清楚什么是服務器,服務器指的是一臺電腦安裝了一個服務器軟件。那么這臺電腦就可以稱為是WEB服務器。那么同樣的一臺電腦安裝了郵件服務器軟件,那么這臺電腦稱為是郵箱服務器。要在Internet上提供電子郵件功能,必須有專門的電子郵件服務器。例如現在網絡上有很多提供郵件服務的廠商:新浪、搜狐、網易等等他們都有自己的郵件服務器。

SMTP協議(發送郵件協議)

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。 SMTP協議屬于TCP/IP協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。 SMTP協議所指定的服務器,就可以把E-mail寄到收信人的服務器上了,整個過程只要幾分鐘。 SMTP服務器則是遵循SMTP協議的發送郵件服務器,用來發送或中轉發出的電子郵件。 通常把處理用戶SMTP請求(郵件發送請求)的郵件服務器稱為SMTP服務器。 默認端口號為25

POP3協議(接收郵件協議)

POP3,全名為“Post Office Protocol - Version 3”,即“郵局協議版本3”。 是TCP/IP協議族中的一員,由RFC1939 定義。 本協議主要用于支持使用客戶端遠程管理在服務器上的電子郵件。 提供了SSL加密的POP3協議被稱為POP3S。 同樣,用戶若想從郵件服務器管理的電子郵箱中接收一封電子郵件的話,他連上郵件服務器后,也需要遵循一定的通訊格式,POP3協議用于定義這種通訊格式。 因而,通常我們也把處理用戶POP3請求(郵件接收請求)的郵件服務器稱為POP3服務器。 默認端口號110

2-3 郵件收發過程的介紹

郵件收發過程

第三章:郵箱服務器和客戶端安裝及配置

3-1 郵箱服務器的安裝和配置

安裝軟件eyoumailserversetup.exe

安裝成功后,修改域名

新建賬號

3-2 郵箱客戶端的安裝和配置

安裝軟件foxmail.exe

安裝成功后,登錄郵箱

第四章:郵件發送代碼實現

4-1 環境搭建

以用戶注冊為例,當用戶注冊成功之后,向用戶注冊郵箱發送用戶激活郵件。

教學時,使用傳統開發方式,先建數據庫表,然后在開發項目。我在學習時,使用JPA技術,基于實體對象模型進行自動創建表。

構建工具:maven
使用框架:Spring Boot

POM文件如下

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.myimooc</groupId><artifactId>myregistweb</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>myregistweb</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.5.3.RELEASE</version></plugin></plugins></build></project>

用戶注冊頁面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"/><title>用戶注冊頁面</title> </head> <body> <form action="/regist" method="post"><table width="600" border="1"><tr><td>用戶名</td><td><input type="text" name="username"/> </td></tr><tr><td>密碼</td><td><input type="password" name="password"/> </td></tr><tr><td>昵稱</td><td><input type="text" name="nickname"/> </td></tr><tr><td>郵箱</td><td><input type="text" name="email"/> </td></tr><tr><td colspan="2"><input type="submit" value="注冊"/> </td></tr></table> </form> </body> </html>

4-2 用戶注冊相關類的創建

代碼演示:

1.編寫領域模型User類

package com.myimooc.myregistweb.domain;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id;@Entity public class User {@Id@GeneratedValueprivate Integer uid;private String username;private String password;private String nickname;private String email;private Integer state;private String code;public Integer getUid() {return uid;}public void setUid(Integer uid) {this.uid = uid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getState() {return state;}public void setState(Integer state) {this.state = state;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}}

2.編寫工具類UuidUtils類

package com.myimooc.myregistweb.util;import java.util.UUID;/*** 生成隨機字符串工具類* @create ZhangCheng by 2017-06-08**/ public class UuidUtils {public static String getUuid(){return UUID.randomUUID().toString().replace("-", "");}}

4-3 用戶注冊功能代碼實現

代碼演示:

1.編寫UserRepository類

package com.myimooc.myregistweb.dao;import org.springframework.data.jpa.repository.JpaRepository;import com.myimooc.myregistweb.domain.User;public interface UserRepository extends JpaRepository<User, Integer> {User findByCode(String code);}

2.編寫UserService類

package com.myimooc.myregistweb.service;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.myimooc.myregistweb.dao.UserRepository; import com.myimooc.myregistweb.domain.User; import com.myimooc.myregistweb.util.MailUtils;@Service public class UserService {@Autowiredprivate UserRepository userRepository;/*** 用戶注冊的方法* @param user*/public void regist(User user){// 將數據存入到數據庫userRepository.save(user);// 發送一封激活郵件try {MailUtils.sendMail(user.getEmail(), user.getCode());} catch (Exception e) { // e.printStackTrace();System.out.println("郵件發送異常");}}/*** 用戶激活的方法* @param user*/public boolean registActive(String code){User user = userRepository.findByCode(code);if( null == user){return false;}user.setState(1);user.setCode("");userRepository.save(user);return true;}}

3.編寫UserController類

package com.myimooc.myregistweb.web.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView;import com.myimooc.myregistweb.domain.User; import com.myimooc.myregistweb.service.UserService; import com.myimooc.myregistweb.util.UuidUtils;@Controller public class RegistController {@Autowiredprivate UserService userService;/*** 跳轉到注冊頁面* @return*/@GetMapping("/regist")public ModelAndView toRegistPage(){return new ModelAndView("regist");}/*** 處理用戶注冊請求* @return*/@PostMapping("/regist")public ModelAndView regist(User user){user.setState(0);// 0,未激活;1,已激活String code = UuidUtils.getUuid()+UuidUtils.getUuid();user.setCode(code);// 調用業務層處理數據userService.regist(user);// 頁面跳轉return new ModelAndView("regist");}/*** 處理用戶激活請求* @return*/@GetMapping("/regist/active")@ResponseBodypublic Object registActive(@RequestParam("code") String code){boolean result = userService.registActive(code);return "激活狀態:"+result;}}

4-4 發送激活郵件

代碼演示:

package com.myimooc.myregistweb.util;import java.util.Properties;import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage.RecipientType;/*** 郵件發送工具類* @create ZhangCheng by 2017-06-08**/ public class MailUtils {/*** 發送郵件的方法* @param to 收件人郵箱地址* @param code 郵件的激活碼*/public static void sendMail(String to,String code) throws Exception{// 1.創建連接對象,連接到郵箱服務器Properties props = new Properties();Session session = Session.getInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("service@zccoder.com", "123");}});// 2.創建郵件對象Message message = new MimeMessage(session);// 設置發件人message.setFrom(new InternetAddress("service@zccoder.com"));// 設置收件人message.setRecipient(RecipientType.TO, new InternetAddress(to));// 設置郵件主題message.setSubject("來自zccoder的賬號激活郵件");// 設置郵件的正文message.setContent("<h1>來自zccoder的賬號激活郵件,激活請點擊一下鏈接:</h1><h3><a href='http://localhost:8080/regist/active?code="+code+"'>http://localhost:8080/regist/active?code="+code+"</h3>", "text/html;charset=UTF-8");// 3.發送一封激活郵件Transport.send(message);}}

4-5 用戶激活功能代碼實現

代碼演示:

package com.myimooc.myregistweb.web.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView;import com.myimooc.myregistweb.domain.User; import com.myimooc.myregistweb.service.UserService; import com.myimooc.myregistweb.util.UuidUtils;@Controller public class RegistController {@Autowiredprivate UserService userService;/*** 跳轉到注冊頁面* @return*/@GetMapping("/regist")public ModelAndView toRegistPage(){return new ModelAndView("regist");}/*** 處理用戶注冊請求* @return*/@PostMapping("/regist")public ModelAndView regist(User user){user.setState(0);// 0,未激活;1,已激活String code = UuidUtils.getUuid()+UuidUtils.getUuid();user.setCode(code);// 調用業務層處理數據userService.regist(user);// 頁面跳轉return new ModelAndView("regist");}/*** 處理用戶激活請求* @return*/@GetMapping("/regist/active")@ResponseBodypublic Object registActive(@RequestParam("code") String code){boolean result = userService.registActive(code);return "激活狀態:"+result;}}

第五章:課程總結

5-1 課程總結

總結

JavaMial的介紹 相關術語 郵件收發過程 郵件服務器搭建和客戶端安裝 用戶注冊發送郵件激活

總結

以上是生活随笔為你收集整理的慕课网_《Java实现邮箱验证》学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。