当前位置:首页 > 学习笔记 > 正文内容

javaWeb邮箱验证

廖万里2年前 (2022-09-09)学习笔记42270

我们的日常生活中用到很多用户注册啦之类的,为了提高安全性和用户体验,我们也会遇到邮箱通过邮箱确定验证信息的例子。

首先我们看一下需要哪些jar包,其中activation.jar和mail.jar是邮件发送不可少的,servlet和jstl在程序中也有用到,所以大家先将jar包导入项目中区。

javaWeb邮箱验证


然后就是我们查看邮箱smtp的服务器地址

javaWeb邮箱验证

下面就是我们的代码

RegisterServlet
package com.yuehailin.controller;
 
/**
 * Created by yuehailin on 2017/12/27.
 */
 
import com.yuehailin.domain.User;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
public class RegisterServlet extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try{
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
            User user = new User();
            user.setEmail(email);
            user.setPassword(password);
            user.setUsername(username);
 
            System.out.println("把用户信息注册到数据库中");
            //用户注册成功之后就使用用户注册时的邮箱给用户发送一封Email
            //发送邮件是一件非常耗时的事情,因此这里开辟了另一个线程来专门发送邮件
            Sendmail send = new Sendmail(user);
            //启动线程,线程启动之后就会执行run方法来发送邮件
            send.start();
 
            //注册用户
            //new UserService().registerUser(user);
            request.setAttribute("message", "恭喜您,注册成功,我们已经发了一封带了注册信息的电子邮件,请查收,如果没有收到,可能是网络原因,过一会儿就收到了!!");
            request.getRequestDispatcher("/message.jsp").forward(request, response);
        }catch (Exception e) {
            e.printStackTrace();
            request.setAttribute("message", "注册失败!!");
            request.getRequestDispatcher("/message.jsp").forward(request, response);
        }
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}
 
Sendmail
package com.yuehailin.controller;
/**
 * Created by yuehailin on 2017/12/27.
 */
import com.yuehailin.domain.User;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class Sendmail extends Thread {
    //用于给用户发送邮件的邮箱
    // PS: 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为“授权码”),
    //    对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
    private String from = "yuehailin99@163.com";
    //邮箱的用户名
    private String username = "yuehailin99";
    //邮箱的密码
    //    对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。// 发件人邮箱的 SMTP 服务器地址, 必须准确,不同邮件服务器地址不同, 一般(只是一般,绝非绝对)格式为: smtp.xxx.com
    // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
    private String password = "yuehailin99";
    //发送邮件的服务器地址
    private String host = "smtp.163.com";
    private User user;
    public Sendmail(User user){
        this.user = user;
    }
    /* 重写run方法的实现,在run方法中发送邮件给指定的用户
     * @see java.lang.Thread#run()
     */
    @Override
    public void run() {
        try{
            Properties prop = new Properties();
            prop.setProperty("mail.host", host);
            prop.setProperty("mail.transport.protocol", "smtp");
            prop.setProperty("mail.smtp.auth", "true");
            Session session = Session.getInstance(prop);
            session.setDebug(true);
            Transport ts = session.getTransport();
            ts.connect(host, username, password);
            Message message = createEmail(session,user);
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        }catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * @Method: createEmail
     * @Description: 创建要发送的邮件
     * @Anthor:孤傲苍狼
     *
     * @param session
     * @param user
     * @return
     * @throws Exception
     */
    public Message createEmail(Session session, User user) throws Exception{
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));
        message.setSubject("用户注册邮件");
        String info = "恭喜您注册成功,您的用户名:" + user.getUsername() + ",您的密码:" + user.getPassword() + ",请妥善保管,如有问题请联系网站客服!!";
        message.setContent(info, "text/html;charset=UTF-8");
        message.saveChanges();
        return message;
    }
   }

User

package com.yuehailin.domain;
 
/**
 * Created by yuehailin on 2017/12/27.
 */
 
public class User {
    private String username;
    private String password;
    private String email;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

register.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML>
<html>
<head>
    <title>注册页面</title>
</head>
<body>
<form action="<c:url value='/RegisterServlet'/>" method="post">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="password"><br/>
    邮箱:<input type="text" name="email"><br/>
    <input type="submit" value="注册">
</form>
</body>
</html>

message.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
    <title>消息提示页面</title>
</head>
<body>
${message}
</body>
</html>


本文链接:https://www.kkkliao.cn/?id=29 转载需授权!

分享到:

添加博主微信共同交流探讨信息差网赚项目: 19528888767 , 请猛戳这里→点我添加

版权声明:本文由廖万里的博客发布,如需转载请注明出处。

“javaWeb邮箱验证” 的相关文章

【新手建站教学】如何使用成本更低的虚拟主机实现快速建站?手把手教你搭建一个属于自己的网站。

【新手建站教学】如何使用成本更低的虚拟主机实现快速建站?手把手教你搭建一个属于自己的网站。

本篇文章教大家如何使用成本更低的虚拟主机去搭建一个网站。虚拟主机价格远低于服务器,所以选择虚拟主机建站是个非常不错的选择。虚拟主机就是一台服务器分出来的小空间,一台虚拟机只能建一个网站,一台服务器理论上可以无限搭建网站。需要准备:1.一台虚拟主机       ...

万策云网络工作室旗下高性能服务器,保证用户数据安全

万策云网络工作室旗下高性能服务器,保证用户数据安全

万策云工作室旗下所有业务均使用1T高防高性能服务器,数据定时备份,多台服务器实时同步数据,保障用户数据安全!多台服务器定时备份,企业级安全,50m独享,大带宽抗cc文件实时同步备份,数据库定时备份。主服务器采用T级群防,150G单机防御的国内高性能服务器。秒解机器!真实可测客户数据丢了都可以找回来...

MyBatis-写分页的几种方法,怎么写分页最简单

MyBatis-写分页的几种方法,怎么写分页最简单

1、就是直接使用我们的SQL语句进行分页,也就是在Mapper里面加上分页的语句就好了。比如MySQL添加一个limit 2,4。这种方式弊端很大,比如我们不用MySQL了,所有的代码都要修改。2、MyBatis中的分页的插件PageHelper,3、自己手写分页框架。这种用的比较少,不是说写不出来...

python如何连接mysql数据库

python链接mysql数据库要用到pymysql模块中的connect ,connect函数是pymysql模块中 用于连接MySQL数据库的一个函数。 所以连接mysql之前需要先导入pymysql模块 location.href="ht...

如何在程序中实现多进程,多进程概述

如何在程序中实现多进程,多进程概述

 多进程:在一个程序中实现多任务处理,可以使用多线程和多进程两种方式。多进程创建:使用Process、类,每次实例化这个类的时候,就创建一个进程对象。编辑 多进程:一个程序运行中,产生了多个进程。N个正在运行的程序----至少N个程序1个程序------可能只有一个进程/也可能有...

CloudDriver一款将各种网盘云盘挂在到电脑本地变成本地磁盘的工具 教程

CloudDriver一款将各种网盘云盘挂在到电脑本地变成本地磁盘的工具 教程

平时我们的电脑可能由于大量的文件资料之类的导致存储空间可能不够,所以我们可以选择将网盘我们的本地磁盘用来存放东西。CloudDrive 是一款可以将 115、阿里云盘、天翼云盘、沃家云盘、WebDAV 挂载到电脑中,成为本地硬盘的工具,支持 Windows 与 Dock...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。