1. 程式人生 > >使用者繫結QQ郵箱找回密碼

使用者繫結QQ郵箱找回密碼

 其找回密碼的流程如下:

第一步:輸入使用者名稱,系統查詢是否存在該使用者,如果存在則進行下一步,並給出使用者的郵箱;否則提示"不存在該使用者"


第二步:存在該使用者後,則進行使用者的郵箱驗證,每個使用者繫結一個QQ郵箱,點選"傳送驗證碼"按鈕,系統會給該郵箱傳送一條包含驗證碼的郵件,傳送成功,系統會在前端顯示"驗證碼已經發送到你的郵箱,請檢視"。使用者填入該驗證碼,並且兩者相匹配,則可以進行下一步,否則無法進行下一步,會提示"輸入的郵箱驗證碼錯誤"



第三步:檢視郵箱收到的郵件,複製驗證碼,填入系統第二步框中,進行第三步驗證。通過前兩步的驗證,已經可以驗證,操作者就是本人,所以第三步,使用者可以直接修改密碼,覆蓋原密碼



第四步:成功找回密碼,是一個新的密碼,使用者可以返回登入頁面進行登入


部分原始碼:

MailUtil.java(傳送郵件工具類)

package com.utils;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

/*
 * 管理員傳送郵件的配置類
 * 作者:海哥
 * 時間:2017年8月20日
 */
public class MailUtil {
   public void SendMessage(String receiver, String title, String content)
   		    throws AddressException,MessagingException{
       Properties properties = new Properties();
       properties.put("mail.transport.protocol", "smtp");// 連線協議
       properties.put("mail.smtp.host", "smtp.qq.com");// 主機名
       properties.put("mail.smtp.port", 465);// 埠號 
       properties.put("mail.smtp.auth", "true");
       properties.put("mail.smtp.ssl.enable", "true");//設定是否使用ssl安全連線  ---一般都使用
       properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
       properties.put("mail.smtp.socketFactory.port", "465");
       properties.put("mail.debug", "true");//設定是否顯示debug資訊  true 會在控制檯顯示相關資訊
       //得到回話物件
       Session session = Session.getInstance(properties);
       // 獲取郵件物件
       Message message = new MimeMessage(session);
       //設定發件人郵箱地址
       message.setFrom(new InternetAddress("
[email protected]
")); //設定收件人地址 message.setRecipients(RecipientType.TO,new InternetAddress[] { new InternetAddress(receiver) }); //設定郵件標題 message.setSubject(title); //設定郵件內容 message.setText(content); //得到郵差物件 Transport transport = session.getTransport(); //連線自己的郵箱賬戶 transport.connect("
[email protected]
", "輸入你自己的授權碼");//密碼為剛才得到的授權碼 //傳送郵件 transport.sendMessage(message, message.getAllRecipients()); System.out.println("郵件正在傳送!"); } }

SendMessage.java(觸發傳送郵件的控制類)
package com.servlet;

import java.io.IOException;

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bean.User;
import com.utils.MailUtil;

@WebServlet("/SendMessage")
public class SendMessage extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public SendMessage() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//設定編碼  
        request.setCharacterEncoding("utf-8");  
        response.setCharacterEncoding("utf-8");  
        response.setHeader("Content-Type","text/html; charset=utf-8");  
        try {
        	  MailUtil mail = new MailUtil();
              int num = (int)((Math.random()*9+1)*100000);   //生成六位驗證碼隨機數
              request.getSession().setAttribute("num", num);   //設定東西儲存驗證碼
              User user = (User) request.getSession().getAttribute("finduser");  //得到修改密碼物件的Object
              String receiver = user.getUser_mail();
              String title = "員工找回密碼";
              String content = "這是高階驗證系統發來的郵件,你正在執行該系統找回密碼的操作,你的郵箱驗證碼為:"+ String.valueOf(num) + ",請不要告訴別人哦!";
			  mail.SendMessage(receiver, title, content);
			  request.getSession().setAttribute("success","驗證碼已經發送到你的郵箱,請檢視!");   //設定東西儲存驗證碼
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			System.out.println("驗證碼傳送失敗");
			e.printStackTrace();
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
        request.getRequestDispatcher("SecondSteps.jsp").forward(request, response);
	}

}

Validation.java(郵箱驗證碼匹配驗證)
package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bean.User;

@WebServlet("/Validation")
public class Validation extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Validation() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//設定編碼  
        request.setCharacterEncoding("utf-8");  
        response.setCharacterEncoding("utf-8");  
        response.setHeader("Content-Type","text/html; charset=utf-8");
        
        String email = request.getParameter("email");
        String fycodes = request.getParameter("fycodes");   //郵箱驗證碼
        int code = Integer.parseInt(fycodes);    //字串轉換為整形
        int num =  (int) request.getSession().getAttribute("num");  //得到剛傳送的郵箱驗證碼
        System.out.println("你的郵箱驗證碼為:"+num);
        if(code == num){                                            //判斷輸入的驗證碼是否和郵箱收到的一致
        	System.out.println("驗證成功!");
      //  	request.getSession().removeAttribute("num");
        	request.getSession().removeAttribute("success");
        	request.getRequestDispatcher("ThirdSteps.jsp").forward(request, response);
        }
        else{
        	request.getSession().setAttribute("ValidaError", "輸入的郵箱驗證碼錯誤!");   //設定東西儲存驗證碼
        	request.getRequestDispatcher("SecondSteps.jsp").forward(request, response);
        }
        
	}

}


相關推薦

使用者QQ郵箱找回密碼

 其找回密碼的流程如下: 第一步:輸入使用者名稱,系統查詢是否存在該使用者,如果存在則進行下一步,並給出使用者的郵箱;否則提示"不存在該使用者" 第二步:存在該使用者後,則進行使用者的郵箱驗證,每個使用者繫結一個QQ郵箱,點選"傳送驗證碼"按鈕,系統會給該郵箱傳送一條包

STEAM賬號被盜(QQ郵箱)的找回方法以及背後操作原理解析

    看到這篇部落格的,想必十有八九都是剛剛發現STEAM賬號被盜的! 針對 STEAM密碼被修改、繫結郵箱被修改、申訴“此客服案件已關閉”、STEAM申訴超過2天沒有結果、當天開啟防毒軟體警告過的高危軟體後被盜號的我覺得會有用! (先看完後面的正文,再回過頭來看幾次的

JavaWeb QQ郵箱找回密碼

我的上一篇部落格,已經寫了登入註冊,接下來寫QQ郵箱找回密碼 首先:我們需要在 QQ郵箱設定中獲取授權碼,步驟如下 進入QQ郵箱---->設定---->賬戶---->開啟服務:POP3/SMTP服務---->儲存授權碼 **其次:**我百度雲盤

JAVA實現通過郵箱找回密碼功能

1.輸入使用者名稱及驗證碼,驗證使用者名稱是否存在 (1).生成驗證碼工具類 package com.utils;     import java.awt.Color;     import java.awt.F

郵箱驗證修改密碼,通過郵箱找回密碼

inpu tar send 發件人 contex 輸入 put nta clas 使用郵箱驗證修改密碼,在這裏我是使用163免費郵進行測試 前臺代碼 1 <input type="text" name="Mail" id="Mail"/> 2

[py][mx]django通過郵箱找回密碼

代碼 地址 技術 make .html pass word bubuko 重置 忘記密碼處理流程 直接上代碼 class ActiveView(View): # 主要功能是修改user_profile裏的is_active字段為1 def get(self, r

JAVAWeb中實現簡單郵箱找回密碼

  版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/qq_40348465/article/details/83629000 本文是介紹在一個小的JAVAWeb專案中,利用郵箱幫使用者找回密碼。   效果展示  &

賬號通過郵箱找回密碼功能設計

通常所說的密碼找回功能不是真的能把忘記的密碼找回,因為我們的密碼是加密儲存的,一般開發者會在驗證使用者資訊後通過程式生成一個新密碼或者生成一個特定的連結併發送郵件到使用者郵箱,使用者從郵箱連結到網站的重置密碼模組重新設定新密碼。 當然現在有的網站也有手機簡訊的方式找回密碼,原理就是通過傳送驗證碼

Ajax+PHPMailer實現郵箱找回密碼功能

       前兩天實現了一個通過郵箱找回密碼的功能,今天來做一個總結: 首先,需要開啟郵箱的IMAP/SMTP服務,我用的是QQ郵箱的,會獲取一個IMAP/SMTP服務密碼:如uudwdedzxbhmhjhb;在這個位置: 檔案目錄結構如下: 其中PHPMaile

自己更換雲平臺QQ號的方法

1、進入站點後臺->雲平臺->診斷工具下,點選手動修改站點ID/KEY,在彈層裡將站點ID、KEY刪掉,同時將雲平臺狀態改為尚未開通雲平臺; 2、更新伺服器快取; 3、下載附件中的檔案,並解壓; 4、上傳 discuzx_update_sitekey.p

更換雲平臺QQ號的方法

一些站點在建站的過程中經常是別人幫忙建站,開通雲平臺可能就用了其他人的QQ號,站點建好之後,站長又想換回自己的QQ號來管理,但是Discuz! 雲平臺為了安全,不給站長自己更換繫結QQ的功能,只能聯絡官方工作人員提交認證資料資訊進行更換QQ。並且要求是沒有開通過漫遊應用和廣

郵箱找回密碼功能實現思路

傳送郵件功能實現參見http://write.blog.csdn.net/postedit/53119376        當用戶找回密碼時,向用戶郵箱傳送一個連結,通過該連結使用者可以轉到密碼重置介面,為了防止非法使用者利用使用者名稱然後直接訪問該密碼重置介面修改使用者密

QQ時java.lang.NoClassDefFound

繫結QQ時,會報如下錯誤: java.lang.NoClassDefFoundError: com.tencent.stat.StatConfig 解決方法如下兩步: 1:右鍵專案,選擇Properties,再點左邊的Java Build Path,右邊切換到Ord

live.com與live.cn郵箱收不到QQ啟用信的解決方法

想給自己的QQ繫結郵箱帳號。 live.com郵箱卻收不到QQ繫結確認信,垃圾箱找過了也是沒有。點了重發好幾次也沒有收到。在別的論壇也看到有發帖說此類郵箱和其他郵箱也有收不到QQ繫結確認信的情況。後來想是不是遮蔽了QQ郵箱。一試果然成功了。 我登入的live.com的郵箱。 一、MSN郵箱設定 點選“選項”-

Vue雙向原理實現——觀察模式

前言 Vue 框架是一種 MVVM 框架,它有一個很大的特點就是資料雙向繫結,在開發過程中我們只需要操作 Model ,而不需要修改 View ,使用起來 VR 因吹斯汀。但是它的實現原理並不複雜,主要是運用了設計模式中的觀察者模式,也可以說是加了鉤子函式。下面用原生 JS 實現一下。

搭建自己的部落格(二十八):增加郵箱的功能,完善使用者資訊

1、郵箱伺服器使用了騰訊伺服器 具體操作見:python自動發郵件 2、變化的部分 3、上程式碼: {# 引用模板 #} {% extends 'base.html' %} {% load staticfiles %} {% load comment_tags %}

微信公眾號使用:長期/短期運營微訊號的方法

      在微信公眾號運營維護中,新增多個運營者是必備需求,因為微信公眾號在使用者量達到一定程度之後,僅靠系統指定的那個管理員已經滿足不了需求,忙不過來,就需要新增其他一些運營者來協同管理維護微信公眾

Discuz X1.5正式開啟QQ帳號登陸功能

今天,登入Discuz官方論壇網站下載一個主題給鋒酷開發社群(www.flycode.org)使用,看到了騰訊和Discuz共同推出的QQ 賬號登入功能,著實讓我比較好奇。早就戴志康說過這個功能會在DX1.5的後續版本中新增,但說暫時還有很多技術難關和環節沒處理好,會在10月份推出, 沒想到,這麼快就推出此項

微信無法登陸,您QQ號疑似被盜解決方案

1.  問題描述 我之前在用微信的時候,因為重置了一下手機,所以再次登入微信的時候,提示需要驗證。在驗證的時候提示要修改qq密碼,修改之後,就提示被盜了。然後怎麼也跳不過這個步驟。今天解決這個問題: 問題解決前提:你需要知道你的微信賬號,並且該微信賬號綁定了一張銀行卡

企業郵箱怎麼微信【教程】

企業郵箱是公司提供給員工用來收發工作郵件專用的郵箱,有些企業郵箱支援在微信上使用,而如何將企業郵箱繫結到微信上,下面小編教你如何使用,以TOM企業郵箱為例 開啟微信搜尋公眾號“隨心郵”並關注 收到推送訊息後點擊訊息,或者下方任意按鈕,可以進入登入頁面 輸入你的賬號密碼點繫結,就可以將你的企業郵