郵箱驗證碼功能實現(xiàn)

在進(jìn)行實際項目的開發(fā)過程中,我們可能會遇到需要需要對用戶賬號密碼進(jìn)行找回,這時就需要我們通過郵件進(jìn)行驗證,從而對用戶信息進(jìn)行修改,下面我就將自己開發(fā)過程中的郵件發(fā)送功能簡單描述一下,供大家學(xué)習(xí)使用。

創(chuàng)新互聯(lián)建站專注于東坡網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供東坡營銷型網(wǎng)站建設(shè),東坡網(wǎng)站制作、東坡網(wǎng)頁設(shè)計、東坡網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務(wù),打造東坡網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供東坡網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。1.MailSenderInfo是確定郵件發(fā)送的類型及其各種屬性

import java.util.HashMap; import java.util.Map; import java.util.Properties; public class MailSenderInfo { private String mailServerHost; //發(fā)送郵件的服務(wù)器 private String mailServerPort="587"; //發(fā)送郵件的服務(wù)器的端口 private String fromAddress; //發(fā)送者地址 private String toAddress; //接收者地址 private String username; //發(fā)送者用戶名 private String password; //發(fā)送者密碼 private boolean validate=true; //是否需要身份驗證 private String subject; //郵件主題 private String content; //郵件內(nèi)容 private Map<String, String> mailType; //郵箱類型 //得到郵件會話屬性 public Properties getProperties(){ Properties p = new Properties(); p.put("mail.smtp.host", this.mailServerHost); p.put("mail.smtp.port", this.mailServerPort); p.put("mail.smtp.auth", validate?"true":"false"); return p; } public String getMailServerHost() { return mailServerHost; } public void setMailServerHost(String mailServerHost) { this.mailServerHost = mailServerHost; } public String getMailServerPort() { return mailServerPort; } public void setMailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public String getToAddress() { return toAddress; } public void setToAddress(String toAddress) { this.toAddress = toAddress; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; this.fromAddress=username; if(username!=null&&username.length()>0){ String fromEmailExt=username.substring(username.lastIndexOf("@")+1,username.lastIndexOf(".")); this.mailServerHost=getMailType().get(fromEmailExt); } } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Map<String, String> getMailType() { mailType=new HashMap<String, String>(); mailType.put("163","smtp.163.com"); mailType.put("139","smtp.139.com"); mailType.put("126","smtp.126.com"); mailType.put("qq", "smtp.qq.com"); mailType.put("sohu", "smtp.sohu.com"); mailType.put("live","smtp.live.cn"); mailType.put("msn","smtp.msn.com"); mailType.put("kum", "mail.kum.Net.cn"); mailType.put("hotmail","smtp.hotmail.cn"); return mailType; } public void setMailType(Map<String, String> mailType) { this.mailType = mailType; } } 2.設(shè)置郵件發(fā)送者的基本信息

import java.util.Date; import java.util.Properties; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; //郵件發(fā)送器 import com.xidian.entity.MailSenderInfo; public class MailSender { /** * 根據(jù)郵件會話屬性和密碼驗證器構(gòu)造一個發(fā)送郵件的session * @return */ protected static Session getSession(MailSenderInfo mailSenderInfo){ if(mailSenderInfo == null){ return null; } MyAuthenticator authenticator = null; Properties pro = mailSenderInfo.getProperties(); if(mailSenderInfo.isValidate()){ authenticator = new MyAuthenticator(mailSenderInfo.getUsername(),mailSenderInfo.getPassword()); } return Session.getDefaultInstance(pro, authenticator); } /** * 發(fā)送文本格式郵件 * @return */ public static boolean sendTextMail(MailSenderInfo mailSenderInfo){ try { //得到session Session mailSession = getSession(mailSenderInfo); //根據(jù)session創(chuàng)建一個郵件消息 Message mailMessage=new MimeMessage(mailSession); //創(chuàng)建郵件發(fā)送者的地址 Address fromAddress=new InternetAddress(mailSenderInfo.getFromAddress()); //創(chuàng)建郵件接收者的地址 Address toAddress=new InternetAddress(mailSenderInfo.getToAddress()); //設(shè)置郵件發(fā)送者的地址 mailMessage.setFrom(fromAddress); //設(shè)置郵件接收者地址 mailMessage.setRecipient(Message.RecipientType.TO, toAddress); //設(shè)置郵件的主題 mailMessage.setSubject(mailSenderInfo.getSubject()); //設(shè)置郵件的發(fā)送內(nèi)容 mailMessage.setText(mailSenderInfo.getContent()); //設(shè)置發(fā)送郵件的時間 mailMessage.setSentDate(new Date()); //發(fā)送郵件 Transport.send(mailMessage); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 發(fā)送html格式郵件 * @return */ public static boolean sendHtmlMail(MailSenderInfo mailSenderInfo) { try { //得到session Session mailSession = getSession(mailSenderInfo); //根據(jù)session創(chuàng)建一個郵件消息 Message mailMessage = new MimeMessage(mailSession); //創(chuàng)建郵件發(fā)送者的地址 Address fromAddress=new InternetAddress(mailSenderInfo.getFromAddress()); //創(chuàng)建郵件接收者的地址 Address toAddress=new InternetAddress(mailSenderInfo.getToAddress()); //設(shè)置郵件發(fā)送者的地址 mailMessage.setFrom(fromAddress); //設(shè)置郵件接收者地址 mailMessage.setRecipient(Message.RecipientType.TO, toAddress); //設(shè)置郵件消息的主題 mailMessage.setSubject(mailSenderInfo.getSubject()); //設(shè)置郵件消息發(fā)送的時間 mailMessage.setSentDate(new Date()); //MiniMultipart類是一個容器類,包含MimeBodyPart類型的對象 Multipart mainPart = new MimeMultipart(); //創(chuàng)建一個包含HTML內(nèi)容的MimeBodyPart BodyPart html = new MimeBodyPart(); //設(shè)置HTML內(nèi)容 html.setContent(mailSenderInfo.getContent(), "text/html; charset=UTF-8"); //將內(nèi)容添加到容器對象中 mainPart.addBodyPart(html); //將MiniMultipart對象設(shè)置為郵件內(nèi)容 mailMessage.setContent(mainPart); //發(fā)送郵件 Transport.send(mailMessage); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } 3.MyAuthenticator 繼承自Authenticator

import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class MyAuthenticator extends Authenticator{ String userName = null; String password = null; public MyAuthenticator(String userName, String password) { this.userName = userName; this.password = password; } @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } } 4.SendEmaiServlet 是郵件發(fā)送的主入口,需要注意的是其中的用戶名是用于發(fā)送郵件的郵箱賬號,密碼是經(jīng)過第三方授權(quán)的,可以通過qq郵箱,163郵箱等在身份驗證后免費獲取。

import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.xidian.entity.Account; import com.xidian.entity.MailSenderInfo; import com.xidian.service.AccountService; import com.xidian.service.impl.AccountServiceImpl; import com.xidian.service.impl.MailSender; public class SendEmailServlet extends HttpServlet{ @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub resp.setContentType("text/html;charset=UTF-8"); resp.setCharacterEncoding("UTF-8"); req.setCharacterEncoding("UTF-8"); MailSenderInfo senderInfo=new MailSenderInfo(); String email = req.getParameter("email"); AccountService as = new AccountServiceImpl(); Account account = as.queryByEmail(email); if(account ==null){ PrintWriter out = resp.getWriter(); out.println("<script type=\'text/javascript\'>"+ "alert(\'您輸入的郵箱不存在!\');"+ "location.href=\'noRegister.jsp\';"+ "</script>"); }else{ senderInfo.setUsername("123456789@qq.com"); //用戶名 senderInfo.setPassword("xxxxxxxxxxxxxxxxx"); //密碼 senderInfo.setToAddress(email);//接收者 senderInfo.setSubject("Battle郵箱驗證"); //主題 Random random = new Random(); // int result=random.nextInt(10); String num = (int)(Math.random()*1000000)+""; String str ="您的暴雪游戲驗證碼為:"+num+",請保護(hù)好您的驗證碼安全不要告訴他人!"; senderInfo.setContent(str); //內(nèi)容 //發(fā)送 MailSender.sendHtmlMail(senderInfo); req.setAttribute("num", num); req.setAttribute("email", email); req.getRequestDispatcher("email.jsp").forward(req, resp); } } }

本文題目:郵箱驗證碼功能實現(xiàn)
網(wǎng)站路徑:http://muchs.cn/article16/cjpegg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站設(shè)計公司、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、全網(wǎng)營銷推廣、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)