1. 程式人生 > >JavaMail實現郵箱驗證碼

JavaMail實現郵箱驗證碼

random 人員 app from 賬戶 net catch cap ttext

  筆者最近在學習系統登錄使用的郵箱驗證碼的功能實現,下面給出使用JavaMail實現發送郵箱驗證碼的代碼。本代碼使用的是163的郵件服務器,可以根據需要更換別的服務器。

import java.util.Arrays;
import java.util.Properties;
import java.util.Random;

import javax.mail.Address;
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; public class SendEmail { public static String send(String email) { Properties p = new Properties(); p.put("mail.smtp.host", "smtp.163.com"); //smtp服務器地址,可以使用別的
p.put("mail.smtp.auth", "true"); Authenticator authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("(您的163郵箱)","(您的郵箱密碼)"); } };
//獲得一個帶有authenticator的session實例 Session sendMailSession = Session.getDefaultInstance(p,authenticator); Message mailMessage = new MimeMessage(sendMailSession); //產生4位驗證碼 Random r = new Random(); StringBuffer captcha1 = new StringBuffer(); for (int i = 0; i < 4; i++) { captcha1.append(r.nextInt(9)+""); } String captcha = new String(captcha1); try { System.out.println("I‘m sending..."); Address from = new InternetAddress("(您的163郵箱)"); //設置發出方 mailMessage.setFrom(from); Address to = new InternetAddress(email);//設置接收人員 mailMessage.setRecipient(Message.RecipientType.TO, to); mailMessage.setSubject("驗證碼");//設置郵件標題 mailMessage.setText(captcha); //設置郵件內容 // 發送郵件 Transport.send(mailMessage); return captcha; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static void main(String[] args) { SendEmail.send("[email protected]"); } }

  上面是發送驗證碼的實現。如果要實現日常我們註冊時正常的功能,即需要控制驗證碼的有效時間,最簡單的可以使用cookie實現,設置cookie過期時間即可。也可以借助數據庫來實現,即註冊時在用戶表插入用戶信息,同時保存發送驗證碼的時間,當用戶輸入驗證碼後可以查詢數據庫保存的時間與當前時間比較即可實現,而且,我們可以在用戶表中添加一個status字段,判斷用戶是註冊成功還是尚未註冊成功。

  至於日常我們碰到的通過向郵箱發送激活郵件,用戶點擊激活郵件激活賬戶的也同樣類似,可以在數據庫中保存一個隨機的key值,然後在發送的鏈接後面拼接用戶id還有隨機key,用戶點擊後取出鏈接的用戶id和key值即可判斷哪個用戶已經成功註冊。

JavaMail實現郵箱驗證碼