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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java邮件验证

發布時間:2023/12/2 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java邮件验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現流程

-用戶注冊
-服務端發送郵件給用戶客戶端
-用戶點擊郵件中的鏈接
-服務端確認驗證成功

JavaMail

提供給開發者處理相關的編程接口。它是Sun發布的用來處理mail的API,它可以方便的執行一些郵件傳輸。

郵箱術語

電子郵箱:用戶在郵件服務器上申請賬戶,郵箱服務器會為這個用戶分配一定的空間,用戶從而可以使用這個賬戶的空間進行收發郵件。
郵件服務器:一臺安裝了郵件服務軟件的電腦。
郵件發送協議(SMTP):Simple Mail Transfer Protocol簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由他來控制郵件的中轉方式,屬于TCP/IP協議簇。通常把處理用戶SMTP請求的郵件服務器稱為SMTP服務器。
POP3協議:Post Office Protocol - version3郵局協議版本3。支持客戶端遠程管理在服務器上的郵件。通常把處理用戶POP3請求的郵件服務器稱為POP3服務器。

郵件收發過程

服務器環境

使用易郵郵箱服務器。在工具->郵箱服務器中設置郵箱域名。然后創建兩個郵箱賬號。

使用foxmail收發郵件。注意如果要配置QQ郵箱,有一些設置比如接受服務器類型需要在網絡客戶端完成,具體不展開。

搭建開發環境

數據庫準備

注冊頁面

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>My JSP 'regist.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><h1>用戶注冊界面</h1><form action="${pageContext.request.contextPath}/RegistServlet" method="post"><table width="400" 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>

郵箱工具類

首先要連接郵件服務器,然后創建郵件,最后發送。

/*** 郵件發送工具類* @author Sherry* */ public class MailUtils {/*** 發送郵件的方法* * @param to* :發送目標* @param code* :激活碼* @throws* @throws Exception*/public static void sendMail(String to, String code) throws Exception {// 創建連接對象,連接到郵件服務器Properties props = new Properties();// 可以用來設置主機或者郵件服務器信息等Session session = Session.getInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 專門用來發送激活郵件的郵箱return new PasswordAuthentication("service@store.com", "111");}});// 創建郵件對象Message message = new MimeMessage(session);// 設置發件人message.setFrom(new InternetAddress("service@store.com"));// 設置收件人message.setRecipient(RecipientType.TO, new InternetAddress(to));// 設置主題message.setSubject("來自xx網站的郵件");// 設置郵件的正文message.setContent("<h1>來自xx網站的郵件,激活請點擊一下鏈接:</h1><h3><a href='http:///idea-pc:12345/regist_web/ActiveServlet?code="+ code+ "'>http:///idea-pc:12345/regist_web/ActiveServlet?code="+ code + "</a></h3>", "text/html;charset=UTF-8");// 發送郵件Transport.send(message);} }

處理用戶點擊驗證地址事件

用戶在注冊的時候,我們通過service@store.com給他發送了一封驗證郵件,當用戶點擊這個超鏈接,要處理這個驗證請求。這里是把用戶在數據庫中的狀態做一個改變。當一個用戶注冊并且狀態已激活時,才可以登錄。

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {try {// 接受激活碼String code = request.getParameter("code");// 根據激活碼查詢用戶UserService service = new UserServiceImpl();User user = service.findByCode(code);if (user != null) {// 已經查詢到,修改用戶狀態user.setState(1);user.setCode(null);service.update(user);request.setAttribute("msg", "您已激活成功,請登錄!");} else {// 根據激活碼沒有查詢到用戶request.setAttribute("msg", "激活碼有誤,請重新激活!");}request.getRequestDispatcher("/msg.jsp").forward(request, response);} catch (Exception e) {e.printStackTrace();throw new RuntimeException();}

注意,注冊和激活的servlet要在web.xml中注冊。

github地址:https://github.com/myfwjy/regist_web

總結

以上是生活随笔為你收集整理的java邮件验证的全部內容,希望文章能夠幫你解決所遇到的問題。

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