zoukankan      html  css  js  c++  java
  • SSH项目里面 忘记密码的邮件发送功能

      1 package com.xxx.util;
      2 
      3 import java.util.Date;
      4 import java.util.Properties;
      5 
      6 import javax.mail.Address;
      7 import javax.mail.BodyPart;
      8 import javax.mail.Message;
      9 import javax.mail.MessagingException;
     10 import javax.mail.Multipart;
     11 import javax.mail.Session;
     12 import javax.mail.Transport;
     13 import javax.mail.internet.InternetAddress;
     14 import javax.mail.internet.MimeBodyPart;
     15 import javax.mail.internet.MimeMessage;
     16 import javax.mail.internet.MimeMultipart;
     17 
     18 public class SimpleMailSender {
     19     public boolean sendTextMail(MailSenderInfo mailInfo) {   
     20           // 判断是否需要身份认证   
     21           MyAuthenticator authenticator = null;   
     22           Properties pro = mailInfo.getProperties();  
     23           if (mailInfo.isValidate()) {   
     24           // 如果需要身份认证,则创建一个密码验证器   
     25             authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());   
     26           }  
     27           // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
     28           Session sendMailSession = Session.getDefaultInstance(pro,authenticator);   
     29           try {   
     30           // 根据session创建一个邮件消息   
     31           Message mailMessage = new MimeMessage(sendMailSession);   
     32           // 创建邮件发送者地址   
     33           Address from = new InternetAddress(mailInfo.getFromAddress());   
     34           // 设置邮件消息的发送者   
     35           mailMessage.setFrom(from);   
     36           // 创建邮件的接收者地址,并设置到邮件消息中   
     37           Address to = new InternetAddress(mailInfo.getToAddress());   
     38           mailMessage.setRecipient(Message.RecipientType.TO,to);   
     39           // 设置邮件消息的主题   
     40           mailMessage.setSubject(mailInfo.getSubject());   
     41           // 设置邮件消息发送的时间   
     42           mailMessage.setSentDate(new Date());   
     43           // 设置邮件消息的主要内容   
     44           String mailContent = mailInfo.getContent();   
     45           mailMessage.setText(mailContent);   
     46           // 发送邮件   
     47           Transport.send(mailMessage);  
     48           return true;   
     49           } catch (MessagingException ex) {   
     50               ex.printStackTrace();   
     51           }   
     52           return false;   
     53         }   
     54           
     55         /**  
     56           * 以HTML格式发送邮件  
     57           * @param mailInfo 待发送的邮件信息  
     58           */   
     59         public static boolean sendHtmlMail(MailSenderInfo mailInfo){   
     60           // 判断是否需要身份认证   
     61           MyAuthenticator authenticator = null;  
     62           Properties pro = mailInfo.getProperties();  
     63           //如果需要身份认证,则创建一个密码验证器    
     64           if (mailInfo.isValidate()) {   
     65             authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());  
     66           }   
     67           // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
     68           Session sendMailSession = Session.getDefaultInstance(pro,authenticator);   
     69           try {   
     70           // 根据session创建一个邮件消息   
     71           Message mailMessage = new MimeMessage(sendMailSession);   
     72           // 创建邮件发送者地址   
     73           Address from = new InternetAddress(mailInfo.getFromAddress());   
     74           // 设置邮件消息的发送者   
     75           mailMessage.setFrom(from);   
     76           // 创建邮件的接收者地址,并设置到邮件消息中   
     77           Address to = new InternetAddress(mailInfo.getToAddress());   
     78           // Message.RecipientType.TO属性表示接收者的类型为TO   
     79           mailMessage.setRecipient(Message.RecipientType.TO,to);   
     80           // 设置邮件消息的主题   
     81           mailMessage.setSubject(mailInfo.getSubject());   
     82           // 设置邮件消息发送的时间   
     83           mailMessage.setSentDate(new Date());   
     84           // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象   
     85           Multipart mainPart = new MimeMultipart();   
     86           // 创建一个包含HTML内容的MimeBodyPart   
     87           BodyPart html = new MimeBodyPart();   
     88           // 设置HTML内容   
     89           html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");   
     90           mainPart.addBodyPart(html);   
     91           // 将MiniMultipart对象设置为邮件内容   
     92           mailMessage.setContent(mainPart);   
     93           // 发送邮件   
     94           Transport.send(mailMessage);   
     95           return true;   
     96           } catch (MessagingException ex) {   
     97               ex.printStackTrace();   
     98           }   
     99           return false;   
    100         }   
    101 }
      1 package com.xxx.util;
      2 
      3 import java.util.Properties;
      4 
      5 public class MailSenderInfo {   
      6       
      7     // 发送邮件的服务器的IP和端口   
      8     private String mailServerHost;
      9     private String mailServerPort = "25";   
     10       
     11     // 邮件发送者的地址   
     12     private String fromAddress;   
     13       
     14     // 邮件接收者的地址   
     15     private String toAddress;   
     16       
     17     // 登陆邮件发送服务器的用户名和密码   
     18     private String userName;   
     19     private String password;   
     20       
     21     // 是否需要身份验证   
     22     private boolean validate = false;   
     23       
     24     // 邮件主题   
     25     private String subject;   
     26       
     27     // 邮件的文本内容   
     28     private String content;   
     29       
     30     // 邮件附件的文件名   
     31     private String[] attachFileNames;     
     32     /**  
     33       * 获得邮件会话属性  
     34       */   
     35     public Properties getProperties(){   
     36       Properties p = new Properties();   
     37       p.put("mail.smtp.host", this.mailServerHost);   
     38       p.put("mail.smtp.port", this.mailServerPort);   
     39       p.put("mail.smtp.auth", validate ? "true" : "false");   
     40       return p;   
     41     }   
     42     public String getMailServerHost() {   
     43       return mailServerHost;   
     44     }   
     45     public void setMailServerHost(String mailServerHost) {   
     46       this.mailServerHost = mailServerHost;   
     47     }  
     48     public String getMailServerPort() {   
     49       return mailServerPort;   
     50     }  
     51     public void setMailServerPort(String mailServerPort) {   
     52       this.mailServerPort = mailServerPort;   
     53     }  
     54     public boolean isValidate() {   
     55       return validate;   
     56     }  
     57     public void setValidate(boolean validate) {   
     58       this.validate = validate;   
     59     }  
     60     public String[] getAttachFileNames() {   
     61       return attachFileNames;   
     62     }  
     63     public void setAttachFileNames(String[] fileNames) {   
     64       this.attachFileNames = fileNames;   
     65     }  
     66     public String getFromAddress() {   
     67       return fromAddress;   
     68     }   
     69     public void setFromAddress(String fromAddress) {   
     70       this.fromAddress = fromAddress;   
     71     }  
     72     public String getPassword() {   
     73       return password;   
     74     }  
     75     public void setPassword(String password) {
     76       this.password = password;
     77     }  
     78     public String getToAddress() {
     79       return toAddress;
     80     }   
     81     public void setToAddress(String toAddress) {
     82       this.toAddress = toAddress;
     83     }
     84     public String getUserName() {
     85       return userName;
     86     }
     87     public void setUserName(String userName) {
     88       this.userName = userName;
     89     }
     90     public String getSubject() {
     91       return subject;   
     92     }  
     93     public void setSubject(String subject) {   
     94       this.subject = subject;   
     95     }  
     96     public String getContent() {   
     97       return content;   
     98     }  
     99     public void setContent(String textContent) {   
    100       this.content = textContent;   
    101     }   
    102 }

    以上是两个工具类,下面是action里面的使用

     1     //找回密码
     2     public String findpwd(){
     3         try {
     4             boolean result = userService.checkEmail(item.getEmail());
     5             int randNum= (int) (((Math.random()+1)*1000000));
     6             if (result) {
     7                 MailSenderInfo mailInfo = new MailSenderInfo();
     8                 mailInfo.setMailServerHost("smtp.126.com");
     9                 mailInfo.setMailServerPort("25");
    10                 mailInfo.setValidate(true);
    11                 mailInfo.setUserName("chuguozhan@126.com");
    12                 mailInfo.setPassword("60514895a");//您的邮箱密码
    13                 mailInfo.setFromAddress("chuguozhan@126.com");
    14                 mailInfo.setToAddress(item.getEmail());
    15                 mailInfo.setSubject("密码找回:");
    16                 mailInfo.setContent("您的重置密码是:"+String.valueOf(randNum));
    17                 
    18                 SimpleMailSender sms = new SimpleMailSender();
    19                 if(sms.sendHtmlMail(mailInfo)){
    20                     User user = userService.getUserByEmail(item.getEmail());
    21                     user.setPassword(String.valueOf(randNum));
    22                     userService.doModifyPwd(user);
    23                     log.info("findpwd success!!!");
    24                     resultMap.put("retcode", RetCode.SUCCESS);
    25                     resultMap.put("retmsg", "重置密码已发送到了您的注册邮箱");
    26                 }else{
    27                     log.info("findpwd fail!!!");
    28                     resultMap.put("retcode", RetCode.FAIL);
    29                     resultMap.put("retmsg", "密码找回失败");
    30                 }
    31             }else{
    32                 log.info("checkPwd fail!!!");
    33                 resultMap.put("retcode", RetCode.CHECK);
    34                 resultMap.put("retmsg", "邮箱不存在,请确认您输入的邮箱是否正确!");
    35             }
    36         } catch (Exception e) {
    37             log.error("findpwd is bug",e);
    38             resultMap.put("retcode", RetCode.UNKOWN_WRONG);
    39             resultMap.put("retmsg", "密码找回出现错误!");
    40         }
    41         return SUCCESS;
    42     }

    Dao层和Service层功能实现就不贴了

  • 相关阅读:
    独立与条件独立
    独立事件、笛卡尔积与矩阵向量乘法
    独立事件、笛卡尔积与矩阵向量乘法
    OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
    等高线的认识
    等高线的认识
    概率相关的证明
    概率相关的证明
    OpenGl中使用着色器的基本步骤及GLSL渲染简单示例
    中英文对照 —— 歌词
  • 原文地址:https://www.cnblogs.com/heyuxiu/p/5784104.html
Copyright © 2011-2022 走看看