java 实现注册时发送激活邮件+激活
时间:2022-06-10
本文章向大家介绍java 实现注册时发送激活邮件+激活,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/48031347
在很多网站注册的时候,为了验证用户信息的真实合法,往往需要验证用户所填邮件的准确性。形式为:用户注册时填写邮箱,注册完成后,网站会向用户所填邮箱发送一封激活邮件,用户点击激活邮件中的链接后,方可完成注册。
最近项目中也用到这个需求,做了个Demo与大家分享,大至思想如下:
数据库表结构
用户表t_user有五个字段分别为用户名、密码、邮箱地址、激活码、状态: | username | password | email |code | state |
核心代码:
UserManager.java
import java.util.Properties;
import java.util.UUID;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import dao.UserDao;
public class UserManager {
/**
* 注册用户
* @param username 用户名
* @param password 密码
* @param email 邮箱
* @return 是否注册成功
*/
public Boolean Register(String username,String password,String email){
Boolean result=false;
//生成用户code
String code=UUID.randomUUID().toString().replace("-", "");
//添加用户
UserDao userDao=new UserDao();
result=userDao.AddUser(username, password, email, code);
//向用户发送激活邮件
sendMail(email,code);
return result;
}
/**
* 发送激活邮件
* @param to 收件人邮箱地址
* @param code 激活码
*/
public static boolean sendMail(String to, String code) {
try {
Properties props = new Properties();
props.put("username", "huyuyang6688@163.com");
props.put("password", "123456");
props.put("mail.transport.protocol", "smtp" );
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.port", "25" );
Session mailSession = Session.getDefaultInstance(props);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("huyuyang6688@163.com"));
msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
msg.setSubject("激活邮件");
msg.setContent("<h1>此邮件为官方激活邮件!请点击下面链接完成激活操作!</h1><h3><a href='http://localhost:8080/SendMail/servlet/ActiveServlet?code="+code+"'>http://localhost:8080/SendMail/servlet/ActiveServlet</a></h3>","text/html;charset=UTF-8");
msg.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect(props.getProperty("mail.smtp.host"), props
.getProperty("username"), props.getProperty("password"));
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
return false;
}
return true;
}
/**
* 激活用户
* @param code 用户激活码
* @return 是否激活成功
*/
public Boolean Active(String code){
UserDao userDao=new UserDao();
String username=userDao.findUserByCode(code);
if(username!=null && username!=""){
//如果存在用户,将此用户状态设为可用
userDao.setState(username);
return true;
}else{
return false;
}
}
}
register.jsp
当用户注册时
1、为用户生成随机的激活码(此激活码是添加根据代码规则自动生成的,这里的激活码以随机生成的UUID为例); 2、添加一条用户记录; 3、向用户发送激活邮件。上述代码中的发信人是小编自己的邮箱,一般为企业邮箱。如果有条件的话,这里还向大家推荐一款邮箱服务器——易邮邮件服务器,可以在局域网内建立邮件系统进行测试。
激活邮件如下:
激活
用户点击邮箱中的链接后,系统根据用户点击链接发来的激活码去数据库中查询与该激活码匹配的用户记录,如果记录存在,则将用户状态更改为可用的状态。
(限于篇幅,这里不贴全部代码,需要的朋友可以点此下载源码)
- 算法模板——哈希单模板字符串匹配
- javascript 原型及原型链详解
- 算法模板——并查集 2(支持快速即时查询本连通块内容,纯原创!)
- 1707: [Usaco2007 Nov]tanning分配防晒霜
- JavaScript 图片的上传前预览(兼容所有浏览器)
- 算法模板——sap网络最大流 3(递归+邻接表)
- BZOJ4819: [Sdoi2017]新生舞会(01分数规划)
- 3401: [Usaco2009 Mar]Look Up 仰望
- javascript 基本概念
- vue内置指令详解——小白速会
- javascript 函数详解
- 深海中的STL—nth_element
- javascript Object与Array用法
- vue class与style 绑定详解——小白速会
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- (一)python3 只需3小时带你轻松入门—— 编程尝试
- (二)python3 只需3小时带你轻松入门——基本变量
- (三)python3 只需3小时带你轻松入门—— 变量的简单运算
- (四)python3 只需3小时带你轻松入门—— 流程控制
- (五)python3 只需3小时带你轻松入门—— 逻辑运算符
- (六)python3 只需3小时带你轻松入门——循环
- (七)python3 只需3小时带你轻松入门——List与dict
- Rstudio支持可视化的Markdown编辑了?
- (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
- (九)python3 只需3小时带你轻松入门——函数自定义
- (十)python3 只需3小时带你轻松入门——模块与包
- (十一)python3 只需3小时带你轻松入门——面向对象
- 一文读懂KEGG数据库
- (创建模式 上)设计模式——工厂、抽象工厂 C++/Python3实现
- 【新手宝典】一篇博文带萌新建站并了解建站体系流程和对萌新友好的便捷方式,这篇博文很有可能是你的启蒙文