Java实现发送邮件(可配置)忘记密码,发送邮件
学过Java基础的应该知道Java里有邮件这一块,不熟悉的话可以简单复习一下
本文章把发送邮件做为可配置可配置文件,这样方便以后维护
一、Maven依赖包 (发送邮件所依赖的jar包)
<!--mail-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency> <dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
二、设置可配置文件
新建.properties文件

配置人如下
##开启debug调试
#mail.debug=true
## 发送服务器需要身份验证
mail.smtp.auth=true
##设置邮件服务器主机名
mail.host=smtp.163.com
##发送邮件协议名称
mail.transport.protocol=smtp ##链接地址
url=127.0.0.1:8089
##邮箱账号密码
mail.username=xxxx
mail.password=xxxx
三、发送邮件
@PostMapping("/updateResetPwd")
@ResponseBody
public JsonResult updateResetPwd(@RequestBody User input,HttpServletRequest request) throws IOException {
JsonResult result = new JsonResult();
String roleName = (String) request.getSession().getAttribute("roleName");
if(!"超级管理员".equals(roleName) && "超级管理员".equals(input.getRoleName())){
result.setMsg("supermana");
return result;
}
input.setPassword(PasswordUtils.passwordEncrypt("123456"));
User user = userService.selectById(input.getId());
Integer flag = userService.updateResetPassword(input);
try {
//传入要发送的邮箱,用户id用户名
sendEmil(user.getEmail(),user.getId(),user.getTrueName());
} catch (MessagingException e) {
e.printStackTrace();
}
if (1 == flag) {
result.setSuccess(true);
} else {
result.setSuccess(false);
}
return result;
}
/**
* 重置密码发送邮件
* @throws MessagingException
*/
public void sendEmil(String Femail,String id,String userName) throws MessagingException, IOException {
Properties props = new Properties();
// 读取配置文件
props.load(this.getClass().getResourceAsStream("/mailConfig.properties"));
Session session = Session.getInstance(props);
// 创建邮件对象
Message msg = new MimeMessage(session);
try {
msg.setSubject("修改密码");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 设置邮件内容
String msgContent = "亲爱的用户 " + userName + " ,您好,<br/><br/>"
+ "您在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "提交重置密码的请求。<br/><br/>"
+ "请打开以下链接重置密码:<br/><br/>"
+ "<a href="+props.getProperty("url")+"/user/resetPwd?id="+id+">http://"+props.getProperty("url")+"/user/resetPwd?id="+id+"</a><br/><br/>"
+ "感谢使用本系统。" + "<br/><br/>"
+ "此为自动发送邮件,请勿直接回复!";
msg.setContent(msgContent, "text/html;charset=utf-8");// 设置邮件内容,为html格式
// 设置发件人
msg.setFrom(new InternetAddress(MimeUtility.encodeText("修改密码") + " <"+ props.getProperty("mail.username")+">"));// 设置邮件来源
Transport transport = session.getTransport();
// 连接邮件服务器
transport.connect(props.getProperty("mail.username"), props.getProperty("mail.password"));
// 发送邮件
transport.sendMessage(msg, new Address[] {new InternetAddress(Femail)});
// 关闭连接
transport.close();
}
四、本例子使用网易邮箱,要完成发送邮件,还需要完成最后一步,开启POP3以网易邮箱为例

获得授权码

结束
如有转载,请联系243661038@qq.com
Java实现发送邮件(可配置)忘记密码,发送邮件的更多相关文章
- 转:java 帐号激活与忘记密码 实例
原文链接:http://endual.iteye.com/blog/1613679 一.帐户激活 在 很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激 ...
- 基于java mail实现简单的QQ邮箱发送邮件
刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...
- 烂泥:ubuntu下配置msmtp+mutt发送邮件
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 本文主要介绍如何在Linux下使用msmtp+mutt发送邮件,当然Linux下发送邮 ...
- PHP 密码重置,发送邮件,随机长度字母数字密码
<?php include ("database.php"); require_once ('email.class.php'); date_default_timezone ...
- Flask-email 发送邮件的配置,发送附件的方法,以及os.environ.get('MAIL_USERNAME')为None的解决办法
一.发送邮件的配置 在学习flask-mail来发送电子邮件的时候遇到了一些问题,其实都是些小问题,现在记录下来以便于以后查看. 1.首先flask-mail的安装 pip install flask ...
- java应用:向用户注册的邮箱发送邮件
实现功能 忘记密码,注册成功等向用户发送验证码信息或注册信息. 业务流程 忘记密码: 1.验证邮箱是否注册过: 2.向邮箱发送验证码: 3.验证验证码是否正确: 4.重新设置密码: 我这里着重介绍发送 ...
- 【PHP】Windows下配置用mail()发送邮件
ZZ:解决windows系统下php.ini邮件配置正确不发送邮件的问题 php mail()函数在windows不能用,需要安装sendmail,假如是用的XAMPP,则已经下载好,不需要重新下载~ ...
- 十、.NET使用本地Outlook邮箱指定邮箱用户名和密码发送邮件
十..NET使用本地Outlook邮箱指定邮箱用户名和密码发送邮件 1.添加Microsoft.Office.Interop.Outlook引用 2.封装发送邮件方法 using System; us ...
- java web实现 忘记密码(找回密码)功能及代码
java web实现 忘记密码(找回密码)功能及代码 (一).总体思路 (二).部分截图 (三).部分代码 (一).总体思路: 1.在 找回密码页面 录入 姓名.邮箱和验证码,录入后点击[提交]按钮, ...
随机推荐
- 学习笔记-JS公开课二
typeof运算符的使用 JS中内置对象Array/Date/Math/String可以看成引用类型 做如下测试: <scripttype="text/javascript" ...
- 为什么很多类甚者底层源码要implements Serializable ?
为什么很多类甚者底层源码要implements Serializable ? 在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的ja ...
- [C++学习历程]基础部分 C++中的指针数组和结构
作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/19938177 一.指针 对学习C++来说,指针是一项重要内容,以前,教 ...
- EBS DBA指南笔记(二)
第三章 监控和诊断 本章涵盖以下几个主题:监测的方法,数据库的监测,apache的监测,forms的监测,并发管理器的监测,服务器的监测,网络的监测,其它的一些监测和诊断方法. 1.监测的方法:主 ...
- HTML5 Web Storage 特性
原文地址: Using HTML5 Web Storage 原文日期: 2010年06月28日 翻译日期: 2013年08月12日 当下Web开发领域最火爆的词语当属 HTML5.HTML5标准的新特 ...
- pycharm+django之小试牛刀
准备好好学习一下python,就从django开始吧,顺带了解一下网站的开发.今天在windows上安装了python,django,以及酷炫吊的IDE--pycharm,学习资料主要是<the ...
- C++ Primer 有感(标准库map类型)
map是键-值对的集合.map类型通常可以理解为关联数组:可以使用键作为下标获取一个值,正如内置数组一样.而关联的本质在于元素的值于某个特定的键相关联,而并非通过元素在数组中的位置获取. 1.map对 ...
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...
- (十五)UITableViewCell的常见属性
UItableViewCellStyle: typedef NS_ENUM(NSInteger, UITableViewCellStyle) { UITableViewCellStyleDefault ...
- Java之美[从菜鸟到高手演变]之设计模式二
在阅读过程中有任何问题,请及时联系:egg. 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 如有转载,请说明出处:http://blog.csdn. ...