javascript
SpringBoot基于易邮邮件服务器实现本地邮件收发
?????????????????????????????????????????????????????????? SpringBoot快速實現本地郵件收發
一:環境準備
???? 1:郵件服務器:易郵郵件服務器.
???? 開發框架:SpringBoot(1.5.7,版本不限),Mysql,JPA(持久層),Thymeleaf(視圖層),IDEA開發工具,FoxMail郵件客戶端方便查看.
???? 對于使用過SpringBoot的伙伴來說,搭建一個SpringBoot是非常容易的事情啦,這里就直接開始哈.
???? 2:準備好相應的pom文件的配置
3:易郵郵件服務器上創建三個賬戶
那個server的賬戶用戶發送郵件的,注意那個域名就可以的.
4:下面來設定字段(主要字段)
?username:用戶名稱.
?password:用戶密碼.
?nickname:用戶昵稱.
?email:郵箱地址.
code:郵件激活碼
state:用戶的激活身份(0:未激活,1:表示已經激活了的)
由于我們使用的JPA,可以不用創建數據表的,運行項目自動生成(數據庫創建就自己準備吧)
application.properties中的文件配置
#關閉Thymeleaf的緩存 spring.thymeleaf.cache=false #熱部署生效配置 spring.devtools.restart.enabled=true #配置JDBC spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=自己的數據庫密碼 spring.datasource.url=jdbc:mysql://localhost:3306/testssm?useUnicode=true&characterEncoding=utf-8 #配置JPA訪問MySql spring.jpa.database=mysql spring.jpa.show-sql=true #這個create屬性就是每次都會新建數據表,但是是空的表. spring.jpa.hibernate.ddl-auto=update #使用freemarker來做視圖層,關閉緩存 spring.freemarker.cache=false spring.freemarker.charset=UTF-85:下面就是entity了
?
@Entity public class People {@Id @GeneratedValue private Integer uid; private String username; private String password; private String nickname; private String code; private String email; private Integer state;相應的set和get方法就自己加吧.
dao層:
@Repository public interface PeopleReposity extends JpaRepository<People,Integer> {/** * 根據用戶的激活碼來查詢用戶 * @param code * @return */ People findByCode(String code); }UID生成的工具方法
public class UidUtil {public static String getUUID(){return UUID.randomUUID().toString().replace("-",""); } }Service層
@Service public class PeopleService {@Autowired private PeopleReposity peopleReposity; /** * 郵箱注冊 */ public People register(People people) throws Exception {// 數據插入庫 // 發送一份郵件 People people1 = peopleReposity.save(people); sendMail(people.getEmail(), people.getCode()); return people; }/** * 發送郵件 */ public static void sendMail(String to, String code) throws Exception { Properties properties = new Properties(); Session session = Session.getInstance(properties, new Authenticator() {????????? @Override
????????? protected PasswordAuthentication getPasswordAuthentication() {
??????????????? return new PasswordAuthentication("server@store.com", "自己的密碼喲");
??????????? }
??????? }); // 創建郵件對象
??????? Message message = new MimeMessage(session);
??????? // 設置發件人
??????? message.setFrom(new InternetAddress("server@store.com"));
??????? // 設置收件人
??????? message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
??????? // 設置郵件的主題
??????? message.setSubject("一封來自SpringBoot學習網站的用戶注冊的激活郵件");
??????? // 設置郵件的正文
??????? message.setContent("<h1>來自SpringBoot的激活郵件,請點擊鏈接激活:</h1><h3><a href='http://localhost:9090/active?code=" + code + "'>http://localhost:9090/active?code=" + code + "</a></h3>", "text/html;charset=UTF-8");
??????? // 發送郵件
??????? Transport.send(message); } /** * 根據激活碼來查詢用戶信息 */ public People findByCode( String code) { return peopleReposity.findByCode(code) ; } /** * 更新用戶的信息 * @param people * @return */ public void save( People people){ peopleReposity.save(people) ; }}
Controller:注冊的控制器
@Controller public class RegisterController {@Autowired private PeopleService peopleService; @RequestMapping(value = "/registerpeople")public String register(HttpServletRequest request, HttpServletResponse response) throws Exception {// 獲取前臺提交的表單參數 response.setCharacterEncoding("UTF-8"); String username=request.getParameter("username"); String password=request.getParameter("password"); String nickname=request.getParameter("nickname"); String email=request.getParameter("email"); // 封裝數據 People people=new People(); people.setUsername(username); people.setPassword(password); people.setNickname(nickname); people.setEmail(email); // 0表示未激活的 people.setState(0); // uid的設置 String code= UidUtil.getUUID()+UidUtil.getUUID(); people.setCode(code); // 注冊發送郵件的業務 People ps=peopleService.register(people); // 跳轉頁面 request.setAttribute("msg","恭喜,您已注冊成功,請去郵箱激活!"); return "msg"; } }視圖層:注冊的頁面<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>注冊頁面</title> <style type="text/css"> *{margin:0; padding:0; }#register{width:400px; height:270px; position:absolute; left:400px; top:100px; border:4px solid chocolate; margin:20px; padding:20px; border-radius: 15px; }</style> </head> <body> <div id="register" align="center"> <h2>用戶注冊頁面</h2> <br/> <form action="/registerpeople" method="post"> 用戶名: <input type="text" name="username" /><br/><br/> 密碼: <input type="password" name="password" /><br/><br/> 昵稱: <input type="text" name="nickname" /><br/><br/> 郵箱: <input type="text" name="email" /><br/><br/> <input type="submit" th:value="注冊"/> <input type="reset" th:value="取消"> </form> </div> </body> </html>
提示信息頁面:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <html lang="en"> <head> <meta charset="UTF-8"> <title>提示信息頁面</title> </head> <body> <div align="center"> <h2 th:text="${msg}">提示信息</h2> </div> </body> </html>頁面跳轉控制器:PageController
@Controller public class PageController {@RequestMapping("/register")public String register(){return "register"; } }激活郵件的控制器ActiveController
@Controller public class ActiveController {@Autowired private PeopleService peopleService; @RequestMapping(value="/active")public String active(HttpServletRequest request, HttpServletResponse response){// 獲取激活碼 String code=request.getParameter("code"); // 查詢用戶 People people=peopleService.findByCode(code); // 修改狀態 if(people!=null){people.setState(1); people.setCode(null); peopleService.save(people); request.setAttribute("msg","您已激活成功,請去登錄!"); }else{request.setAttribute("msg","您的激活碼有誤,請重新激活!"); }return "msg"; } }發送成功的郵件:
數據庫信息查看:
郵件激活的操作原理就是:根據郵箱中的激活碼查找到該用戶后,將用戶狀態修改為1,然后將code設置為null,只使用一次,然后更新數據表即可.
?以上就是快速實現本地郵件的收發的(只能本地發送的喲),當然如果要使用自己的網易郵箱的,修改一下,這樣就可在在項目中注冊郵箱的時候就有自己的網易郵箱來發送郵件了的,一定要開啟
總結
以上是生活随笔為你收集整理的SpringBoot基于易邮邮件服务器实现本地邮件收发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真实网络环境下使用易邮搭建网络邮件服务器
- 下一篇: foxmail6.5+易邮邮件服务器搭建