java web 找回密码_JavaWeb利用邮箱帮用户找回密码
本文是介绍在一个小的JAVAWeb项目中,利用邮箱帮用户找回密码。
效果展示
需要一个发送邮件的jar包 : javax.mail .jar
1.JSP页面(设置邮箱输入框)
pageEncoding="UTF-8"%>
找回密码-图书管理系统
height="60px" style="margin-top: 100px" placeholder="请输入您的邮箱地址"
required>
width="100px" height="60px">找回密码
οnclick="backLogin()" width="100px" height="60px">返回登录页面
function backLogin() {
window.location.href = "login.jsp"
}
2.Servlet代码(根据用户输入的邮箱账号找到用户,并生成发送邮件类的实例,再设置收件人和要发送的内容,最后发送邮件)
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取用户的邮箱
String email = request.getParameter("email");
Admin admin = null;
User user = null;
PrintWriter out = response.getWriter();
//实例化一个发送邮件的对象
SendMail mySendMail = new SendMail();
//根据邮箱找到该用户信息
admin = adminService.getAdminByEmail(email);
if(admin!=null) {
//设置收件人和消息内容
mySendMail.sendMail(email, "图书管理系统提醒,您的密码为:"+admin.getPassword());
out.println("");
} else {
user = userService.getUserByEmail(email);
if(user!=null) {
mySendMail.sendMail(email, "图书管理系统提醒,您的密码为:"+user.getPassword());
out.println("");
}
}
out.println("");
}
3.发送邮件类
package com.bookms.util;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class SendMail {
// 发件人的邮箱账号如:xxx@163.com
public static String sendEmailAccount = "";
// 发件人的邮箱的授权码(自己在邮箱服务器中开启并设置)
public static String sendEmailPassword = "";
// 发件人邮箱的SMTP服务器地址,如:smtp.163.com
public static String sendEmailSMTPHost = "smtp.163.com";
// 收件人的邮箱账号
public static String receiveMailAccount = "";
// 把发送邮件封装为函数,参数为收件人的邮箱账号和要发送的内容
public void sendMail(String receiveMailAccount, String mailContent) {
// 创建用于连接邮件服务器的参数配置
Properties props = new Properties();
// 设置使用SMTP协议
props.setProperty("mail.transport.protocol", "smtp");
// 设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.host", sendEmailSMTPHost);
// 设置需要验证
props.setProperty("mail.smtp.auth", "true");
// 根据配置创建会话对象, 用于和邮件服务器交互
Session session = Session.getInstance(props);
// 设置debug模式,便于查看发送过程所产生的日志
session.setDebug(true);
try {
// 创建一封邮件
MimeMessage message = createMimeMessage(session, sendEmailAccount, receiveMailAccount, mailContent);
// 根据 Session 获取邮件传输对象
Transport transport = session.getTransport();
transport.connect(sendEmailAccount, sendEmailPassword);
// 发送邮件, 发到所有的收件地址, 通过message.getAllRecipients() 可以获取到在创建邮件对象时添加的所有收件人
transport.sendMessage(message, message.getAllRecipients());
// 关闭连接
transport.close();
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @param session
* 和服务器交互的会话
* @param sendMail
* 发件人邮箱
* @param receiveMail
* 收件人邮箱
* @return
* @throws Exception
*/
public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail,
String mailContent) throws Exception {
// 创建一封邮件
MimeMessage message = new MimeMessage(session);
// 设置发件人姓名和编码格式
message.setFrom(new InternetAddress(sendMail, "图书管理系统", "UTF-8"));
// 收件人
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "尊敬的用户", "UTF-8"));
// 设置邮件主题
message.setSubject("找回密码提醒", "UTF-8");
// 设置邮件正文
message.setContent(mailContent, "text/html;charset=UTF-8");
// 设置发件时间
message.setSentDate(new Date());
// 保存设置
message.saveChanges();
return message;
}
}
注意此处用的授权码,需要自己登录邮箱去设置,如163邮箱设置如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java web 找回密码_JavaWeb利用邮箱帮用户找回密码相关推荐
- Java Web 网络商城案例演示五(用户激活)
Java Web 网络商城案例演示五(用户激活) 1.用户激活 2.登录 3.退出 4.抽取公共页面 5.查询所有分类 6.首页热门商品_最新商品显示 7.商品详情显示 8.基础分页操作 9.首页分类 ...
- 攻击 | 破解windows7密码(利用PE系统破解XP密码)
攻击 | 破解windows7密码(利用PE系统破解XP密码) 引子-破解win7密码 背景-虚拟环境 原理 实现过程 引子-破解win7密码 在学校安排的网络空间安全实训过程中,了解到破解windo ...
- java web 添加超链接_Javaweb 超链接后显示问题
java web 项目发送带有超链接文本邮件问题 今天做java web项目的时候遇到了一个很想不通的或者说很奇葩的问题, 小编首先需要设置邮件内容的格式为:html 其次在内容中加上不要太乖,不想做 ...
- java web架构配置_javaweb(1) tomcat配置和web程序结构
一.tomcat配置 为方便在cmd中直接启动tomcat服务器,可以像其他程序(如jdk)一样配置tomcat. 1.CATALINA_HOME = D:\java\apache-tomcat-8. ...
- linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案
1.vim /etc/my.cnf [mysqld] skip-grant-tables ##追加此行,跳过权限表, 2.重启mysql systemctl restart mysqld 3.mysq ...
- oracle的口令就是密码吗,如何修改Oracle用户的密码(不改变原密码)
如何修改Oracle用户的密码 有的人回答说这个不是很简单吗 alter user identified by +密码 如果不知道用户的密码情况下,不能改变原始密码呢(适用于用户密码过期) 测试如下 ...
- mongodb默认的用户名密码_Windows下MongoDB设置用户、密码
在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证. 好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱. 坏处是,公网服务器搭建Mong ...
- linux 去掉登陆密码吗,Linux 清除 Windows用户登录密码
Linux 清除 Windows用户登录密码 [toc] 一. 环境 Windows 系统: Windows 10 win10.png Linux 系统: Parrot Linux parrot_se ...
- linux登录pg数据库密码,PostgreSQL:修改数据库用户的密码
1. psql.bin: FATAL: password authentication failed for user "postgres"#su postgres -bash ...
最新文章
- CentOS7安装配置redis-3.0.0
- PS如何批量生成缩略图(方法可以通用其他重复劳动)
- 实录 | 平安人寿资深算法工程师张智:人机交互场景下的知识挖掘
- 密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化!
- 从excel表中生成批量SQL,将数据录入到数据库中
- 计算机图形学颜色表示,计算机图形学 颜色表示模型.ppt
- 数字摄像机常见术语和参数介绍
- myeclipse堆栈溢出
- 微信小程序登录 php后台
- lisp6 暖通cad_AutoCAD超强小工具(ARKtools)说明
- BLENDER快捷键(个人防止忘记的几个快捷键)
- 如何查看路由器的MAC地址
- STM32F103_study61_The punctual atoms(Clock System Intro)
- 学计算机应用表白,521.1314表白的数学题 学霸间的表白方式
- Autodesk Maya 2018.6 中文特别版 Mac 顶级三维动画制作工具
- 把时间当作朋友 -- 读书笔记
- face_recognition人脸识别框架
- 计算机格式化磁盘6,磁盘格式化
- [USACO06NOV]糟糕的一天Bad Hair Day
- centos 6.5 httpd 自建CA 认证 实现 https 服务
热门文章
- ubuntu使用postfix和AWS-SES发送邮件
- [atc复盘] abc296 20230401
- css !important 用法
- msiexec.exenbsp;进程
- drawArc方法:绘制圆弧
- Uncaught SyntaxError: Unexpected token in JSON at position ....
- 基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)
- css - hover 注意事项
- #557. 蒟蒻KC的垃圾数列
- fatal: 不是git 仓库(或者任何父目录):.git 解决办法