基于163邮件服务器实现邮箱验证
生活随笔
收集整理的這篇文章主要介紹了
基于163邮件服务器实现邮箱验证
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于163實現郵箱驗證,需先開啟郵箱的SMTP服務,利用javax中的mail包實現對郵件的操作。
依賴文件
<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version> </dependency>MailUtil.java
public class MailUtil {public static final String FROM = "*******@163.com"; //發件人的emailpublic static final String PWD = "*****"; //發件人密碼--郵箱密碼public static final String URL = "http://****"; //項目主頁public static final int TIMELIMIT = 1000*60*60*24; //激活郵件過期時間24小時public static final String HOST = "smtp.163.com"; //163的smtp服務器public static final String SMTP = "smtp";//激活賬號public static UserAuth activateMail(UserAuth user) throws Exception {//注冊郵箱String email = user.getAccount();//當前時間戳Long curTime = System.currentTimeMillis();//激活的有效時間Long activateTime = curTime+TIMELIMIT;//激活碼--用于激活郵箱賬號String token = Md5Util.md5(email+curTime);user.setToken(token);//過期時間user.setTimes(activateTime);//發送的郵箱內容String content = "<p>歡迎使用MINISCENE!<br><br>請在24小時內點擊下面的鏈接激活帳戶:"+"<br><a href='"+URL+"/user/activate.html?v=1.0&token="+token+"&email="+email+"'>"+URL+"/user/activate.html?v=1.0&token="+token+"&email="+email+"</a></p>";//調用發送郵箱服務MailUtil.sendMail(email, "MINISCENE賬號激活", content);return user;}//找回密碼public static int codeMail(String email,String code){//發送的郵箱內容String content = "<p>答應我,不要輕易告訴別人驗證碼,并在5分鐘內重置密碼:<br>請收好您的驗證碼:"+code+"</p>";//調用發送郵箱服務try{MailUtil.sendMail(email, "密碼找回", content);return 1;}catch (Exception e){e.printStackTrace();return 0;}}//郵件發送public static void sendMail(String email,String title,String content) throws Exception {Properties props = new Properties(); //加載一個配置文件// 使用smtp:簡單郵件傳輸協議props.put("mail.smtp.host", HOST);//存儲發送郵件服務器的信息props.put("mail.smtp.port", 465);//設置端口props.put("mail.smtp.auth", "true");//同時通過驗證props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");Session session = Session.getInstance(props);//根據屬性新建一個郵件會話MimeMessage message = new MimeMessage(session);//由郵件會話新建一個消息對象message.setFrom(new InternetAddress(FROM));//設置發件人的地址message.setRecipient(Message.RecipientType.CC, new InternetAddress(FROM)); //抄送message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));//設置收件人,并設置其接收類型為TOmessage.setSubject(title);//設置標題//設置信件內容message.setContent(content, "text/html;charset=gbk"); //發送HTML郵件message.setSentDate(new Date());//設置發信時間message.saveChanges();//存儲郵件信息//發送郵件Transport transport = session.getTransport(SMTP);transport.connect(FROM, PWD);transport.sendMessage(message, message.getAllRecipients());//發送郵件,其中第二個參數是所有已設好的收件人地址transport.close();} }生成token的MD5加密工具:
MD5Util.java
public class Md5Util {//MD5加密,生成32位md5碼public static String md5(String inStr){MessageDigest StrMD5 = null;try{StrMD5 = MessageDigest.getInstance("MD5");}catch (Exception e){e.printStackTrace(); return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++)byteArray[i] = (byte) charArray[i];byte[] md5Bytes = StrMD5.digest(byteArray);StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++){int val = ((int) md5Bytes[i]) & 0xff;if (val < 16)hexValue.append("0");hexValue.append(Integer.toHexString(val));} return hexValue.toString(); } }?
總結
以上是生活随笔為你收集整理的基于163邮件服务器实现邮箱验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mike21换成计算机名称,MIKE 2
- 下一篇: 万维钢 万万没想到读书笔记