本文是介绍在一个小的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利用邮箱帮用户找回密码相关推荐

  1. Java Web 网络商城案例演示五(用户激活)

    Java Web 网络商城案例演示五(用户激活) 1.用户激活 2.登录 3.退出 4.抽取公共页面 5.查询所有分类 6.首页热门商品_最新商品显示 7.商品详情显示 8.基础分页操作 9.首页分类 ...

  2. 攻击 | 破解windows7密码(利用PE系统破解XP密码)

    攻击 | 破解windows7密码(利用PE系统破解XP密码) 引子-破解win7密码 背景-虚拟环境 原理 实现过程 引子-破解win7密码 在学校安排的网络空间安全实训过程中,了解到破解windo ...

  3. java web 添加超链接_Javaweb 超链接后显示问题

    java web 项目发送带有超链接文本邮件问题 今天做java web项目的时候遇到了一个很想不通的或者说很奇葩的问题, 小编首先需要设置邮件内容的格式为:html 其次在内容中加上不要太乖,不想做 ...

  4. java web架构配置_javaweb(1) tomcat配置和web程序结构

    一.tomcat配置 为方便在cmd中直接启动tomcat服务器,可以像其他程序(如jdk)一样配置tomcat. 1.CATALINA_HOME = D:\java\apache-tomcat-8. ...

  5. linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案

    1.vim /etc/my.cnf [mysqld] skip-grant-tables ##追加此行,跳过权限表, 2.重启mysql systemctl restart mysqld 3.mysq ...

  6. oracle的口令就是密码吗,如何修改Oracle用户的密码(不改变原密码)

    如何修改Oracle用户的密码 有的人回答说这个不是很简单吗 alter user identified by +密码 如果不知道用户的密码情况下,不能改变原始密码呢(适用于用户密码过期) 测试如下 ...

  7. mongodb默认的用户名密码_Windows下MongoDB设置用户、密码

    在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证. 好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱. 坏处是,公网服务器搭建Mong ...

  8. linux 去掉登陆密码吗,Linux 清除 Windows用户登录密码

    Linux 清除 Windows用户登录密码 [toc] 一. 环境 Windows 系统: Windows 10 win10.png Linux 系统: Parrot Linux parrot_se ...

  9. linux登录pg数据库密码,PostgreSQL:修改数据库用户的密码

    1.  psql.bin: FATAL: password authentication failed for user "postgres"#su  postgres -bash ...

最新文章

  1. CentOS7安装配置redis-3.0.0
  2. PS如何批量生成缩略图(方法可以通用其他重复劳动)
  3. 实录 | 平安人寿资深算法工程师张智:人机交互场景下的知识挖掘
  4. 密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化!
  5. 从excel表中生成批量SQL,将数据录入到数据库中
  6. 计算机图形学颜色表示,计算机图形学 颜色表示模型.ppt
  7. 数字摄像机常见术语和参数介绍
  8. myeclipse堆栈溢出
  9. 微信小程序登录 php后台
  10. lisp6 暖通cad_AutoCAD超强小工具(ARKtools)说明
  11. BLENDER快捷键(个人防止忘记的几个快捷键)
  12. 如何查看路由器的MAC地址
  13. STM32F103_study61_The punctual atoms(Clock System Intro)
  14. 学计算机应用表白,521.1314表白的数学题 学霸间的表白方式
  15. Autodesk Maya 2018.6 中文特别版 Mac 顶级三维动画制作工具
  16. 把时间当作朋友 -- 读书笔记
  17. face_recognition人脸识别框架
  18. 计算机格式化磁盘6,磁盘格式化
  19. [USACO06NOV]糟糕的一天Bad Hair Day
  20. centos 6.5 httpd 自建CA 认证 实现 https 服务

热门文章

  1. ubuntu使用postfix和AWS-SES发送邮件
  2. [atc复盘] abc296 20230401
  3. css !important 用法
  4. msiexec.exenbsp;进程
  5. drawArc方法:绘制圆弧
  6. Uncaught SyntaxError: Unexpected token in JSON at position ....
  7. 基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)
  8. css - hover 注意事项
  9. #557. 蒟蒻KC的垃圾数列
  10. fatal: 不是git 仓库(或者任何父目录):.git 解决办法