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.在 找回密码页面 录入 姓名.邮箱和验证码,录入后点击[提交]按钮, ...
随机推荐
- LaTex计数器
记数器 绝大多数都与可以改变他们的命令有相同的名称 part chapter section subsection paragraph subparagraph page equation figur ...
- Java进阶(六)Java反射机制可恶问题NoSuchFieldException
作为一种重要特性,Java反射机制在很多地方会用到.在此做一小结,供朋友们参考. 首先从一个问题开始着手. 可恶的问题又来了,NoSuchFieldException,如下图所示: 完全不知道这个qu ...
- Gradle 1.12 翻译——第十二章 使用Gradle 图形用户界面
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- [TCP] 网络协议流程图
之前在跟别人讲协议的时候总是找不到类似的图,这次再看python网络编程书籍的时候找到了一个,留存一份. 清晰的看到不同协议在不同层的传输过程!
- android TabLayout实现京东详情效果
Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...
- Python代码运行助手
将下述demo文件保存下来,比如存为learning.py 然后运行,如果出现: Ready for Python code on port 39093... 则说明成功了. demo #!/usr/ ...
- C++ Primer 有感(类)
1.在类内部,声明成员函数时必需 的,而定义成员函数则是可选的.在类内部定义的函数默认为inline. 2.const成员函数不能改变其所操作的对象的数据成员.const必须同时出现在声明和定义中,若 ...
- 推荐一个优秀的c++源代码,TinyXml2
项目主页:http://grinninglizard.com/tinyxml2docs/index.html tinyxml2.h /* Original code by Lee Thomason ( ...
- [SqlServer]2008转到2005的步骤步骤
2008转到2005的步骤步骤 1. 生成for 2005版本的数据库脚本 2005 的manger studio -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例 ...
- 实例分析exec函数
fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的"副本&quo ...