注册成功发送一份邮件小实例

注册页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/doregister" method="post">
   用户名: <input type="text" name="name"><br>
    年龄:<input type="text" name="age"><br>
    email:<input type="text" name="email"><br>
    <input type="submit" value="注册">
</form>
</body>
</html>

用户pojo

package pojo;

import jdk.nashorn.internal.objects.annotations.Constructor;


public class User {
    private String name;
    private int age;
    private String email;

    public User() {
    }

    public User(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "user{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                '}';
    }
}

发送邮件utill

package mailUtill;

import com.sun.mail.util.MailSSLSocketFactory;
import pojo.User;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;


//用多线程调优,防止多人在注册网站时响应过慢出现空白
//实现发邮件为一条线程,不干扰到jsp这边的页面响应
public class sendMail extends Thread{
//    把user用户添加进来
    private User user;
    public sendMail(User user){
        this.user=user;
    }
    public void run() {
        Properties prop =null;
//    qq邮箱需设置ssl加密
        MailSSLSocketFactory sf = null;
        try {
            prop = new Properties();
//    设置QQ邮箱服务器
            prop.setProperty("mail.host","smtp.qq.com");
//    邮件发送协议
            prop.setProperty("mail.transport.protocol","smtp");
//    需要验证用户密码
            prop.setProperty("mail.stmp.auth","true");

            sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable","true");
            prop.put("mail.smtp.ssl.socketFactory",sf);

//  使用javamail发送邮箱的5个步骤
/*1,创建定义整个应用程序所需的环境信息的session对象
qq才有,其他邮箱没有
*/
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
//            发件人邮件用户名、授权码
                    return new PasswordAuthentication("117513@qq.com", "邮箱序列号");
                }
            });
            //    debug邮箱发送过程
            session.setDebug(true);

//    通过session得到transport对象
            Transport ts = session.getTransport();

//    使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com","117513@qq.com","邮箱序列号");
            /

//    创建邮件
            MimeMessage message = new MimeMessage(session);

//    指明邮件发件人
            message.setFrom(new InternetAddress("1175135@qq.com"));
//    指明邮件收件人  (收件人邮箱从user处获取)
            message.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getEmail()));
            //邮件的标题
            message.setSubject("注册成功");
//    邮件的文本内容
            message.setContent("用户名为"+user.getName()+"您已成功注册了我们的网站","text/html;charset=UTF-8");




//    发送邮件
            ts.sendMessage(message,message.getAllRecipients());
//    关闭连接
            ts.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

注册表单处理

package com.nn.servlet;

import mailUtill.sendMail;
import pojo.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 doRegister extends HttpServlet {


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        从前端获取值
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String email = req.getParameter("email");
//        把值设置给user对象
        User user = new User(name, new Integer(age), email);
//        new一个发送邮件的对象,并把已经赋值完的user传给它
        sendMail mail = new sendMail(user);
//        启动发邮件的线程
        mail.start();
//        设置一个消息属性
        req.setAttribute("meg","您已注册成功,待会您将会收到一封注册成功的邮件");
//        转发到消息显示页面
        req.getRequestDispatcher("info.jsp").forward(req,resp);
    }
}

消息页面

<%--
  Created by IntelliJ IDEA.
  User: 11751
  Date: 2022-4-23 , 0023
  Time: 16:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册成功</title>
</head>
<body>
${meg}
</body>
</html>

配置

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
<servlet>
  <servlet-name>doregister</servlet-name>
  <servlet-class>com.nn.servlet.doRegister</servlet-class>
</servlet>
  <servlet-mapping>
    <servlet-name>doregister</servlet-name>
    <url-pattern>/doregister</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>register.jsp</welcome-file>
  </welcome-file-list>
</web-app>
<dependencies>
  <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
  <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
  <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/javax.activation/activation -->
  <dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
  </dependency>

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
  </dependency>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
  </dependency>
</dependencies>

在这里插入图片描述
在这里插入图片描述

获取邮箱序列号

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值