博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSH项目里面 忘记密码的邮件发送功能
阅读量:6974 次
发布时间:2019-06-27

本文共 9408 字,大约阅读时间需要 31 分钟。

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层功能实现就不贴了

 

转载于:https://www.cnblogs.com/heyuxiu/p/5784104.html

你可能感兴趣的文章
Vijos P1114 FBI树【DFS模拟,二叉树入门】
查看>>
sersync实时同步
查看>>
为确保固定资产的财务帐与实物帐一致,应采取的措施
查看>>
linux基础—课堂随笔05_文本三剑客之SED
查看>>
MVC 数据验证
查看>>
输入和输出
查看>>
UITouch 点击事件
查看>>
mongodb shell 操作
查看>>
Android:TabLayout的一些设置
查看>>
高斯消元
查看>>
Python开发【项目】:选课系统
查看>>
如果用 索引的话,这个太不方便了,草,
查看>>
java 返回年月的第一天 和最后一天【转载】
查看>>
原创:ASP.Net状态管理读书笔记--思维导图
查看>>
爬虫大作业-爬区a9vg电玩部落ps4专区
查看>>
Android的图形显示原理(GDI)一
查看>>
CORS跨域请求限制-options预检请求
查看>>
Python正则表达式精讲
查看>>
Python字符串拼接、截取及替换方法总结
查看>>
3.Session安装配置
查看>>