Java--登录注册邮箱验证

package com.example.test.thread;


import com.example.test.TestApplication;
import com.example.test.bean.UserBean;
import com.example.test.controller.LoginController;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;
import java.util.Random;


public class MySendMailThread extends Thread {

    public static StringBuilder run(StringBuilder sb){
        String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        sb=new StringBuilder(4);
        for(int i=0;i<4;i++)
        {
            char ch=str.charAt(new Random().nextInt(str.length()));
            sb.append(ch);
        }
        return sb;
    }

    public UserBean userBean;
    public MySendMailThread(UserBean userBean) {
        this.userBean = userBean;
    }


    @Override
    public void run() {

        StringBuilder sb = null;
        StringBuilder a = run(sb);

        // 跟smtp服务器建立一个连接
        Properties p = new Properties();
        // 设置邮件服务器主机名
        p.setProperty("mail.host", "smtp.qq.com");// 指定邮件服务器,默认端口 25
        // 发送服务器需要身份验证
        p.setProperty("mail.smtp.auth", "true");// 要采用指定用户名密码的方式去认证
        // 发送邮件协议名称
        p.setProperty("mail.transport.protocol", "smtp");
        // 开启SSL加密,否则会失败
        MailSSLSocketFactory sf = null;
        try {
            sf = new MailSSLSocketFactory();
        } catch (GeneralSecurityException e1) {
            e1.printStackTrace();
        }
        sf.setTrustAllHosts(true);
        p.put("mail.smtp.ssl.enable", "true");
        p.put("mail.smtp.ssl.socketFactory", sf);
        // 开启debug调试,以便在控制台查看
        // session.setDebug(true);也可以这样设置
        // p.setProperty("mail.debug", "true");
        // 创建session
        Session session = Session.getDefaultInstance(p, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 用户名可以用QQ账号也可以用邮箱的别名
                PasswordAuthentication pa = new PasswordAuthentication(
                        "2476612035@qq.com", "kqyxtmqqvbcieajc");
                // new PasswordAuthentication中第一个为发邮件的自己的QQ号,第二个为授权码(需要到QQ邮箱中获取)
                return pa;
            }
        });
        session.setDebug(true);// 设置打开调试状态
        try {
            // 声明一个Message对象(代表一封邮件),从session中创建
            MimeMessage msg = new MimeMessage(session);
            // 邮件信息封装
            // 1发件人
            msg.setFrom(new InternetAddress("2476612035@qq.com"));
            // 2收件人
            msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(userBean.getemail()));
            // 3邮件内容:主题、内容
            msg.setSubject(userBean.getName() + ",欢迎注册智能路灯系统账号,请点击链接激活账号");
            // StringBuilder是线程不安全的,但是速度快,这里因为只会有这个线程来访问,所以可以用这个
            StringBuilder sbd = new StringBuilder();
            sbd.append(userBean.getName() + "<br/>欢迎!请确认此邮件地址以激活您的账号。<br/>");
            sbd.append("<font color='red'><a href='http://127.0.0.1:8080/login?name="
                    + userBean.getName() + "' target='_blank'");
            sbd.append(">立即激活</a></font><br/>");
            sbd.append("或者输入下面验证码:<br/>");
            sbd.append("验证码为:" + a.toString() + "<br/>");
            LoginController.setMap(a.toString(), userBean.getemail());
/*            Test1.setMap(a.toString(), userBean.getemail());*/
            sbd.append("这是一封自动发送的邮件;如果您并未要求但收到这封信件,您不需要进行任何操作。");
            msg.setContent(sbd.toString(), "text/html;charset=utf-8");// 发html格式的文本
            // 发送动作
            Transport.send(msg);
            System.out.println("给" + userBean.getemail() + "发送邮件成功。");
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}
package com.example.test.thread;

import com.example.test.bean.UserBean;
import com.example.test.mapper.UserMapper;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;


public class Test1 {


    HashMap<String,String> map=new HashMap<String,String>();

    private static Map<String, String> yzMap = new HashMap<>();

    public static void main(String[] args) {
        UserBean userBean = new UserBean();
        userBean.setemail("3533163058@qq.com");
        userBean.setName("gaosheng");
        MySendMailThread mySendMailThread = new MySendMailThread(userBean);
        mySendMailThread.start();
        Scanner sc = new Scanner(System.in);
        String yzm = sc.nextLine();
        System.out.println(yz(yzm, "3533163058@qq.com"));

    }

    public static void setMap(String yz, String email){
        yzMap.put(email, yz);
        System.out.println(yz);
    }
    public static boolean yz(String yz, String email) {
        boolean res = false;
        String yzm = yzMap.get(email);
        if (yzm != null && yzm.equals(yz)){
            res = true;
        }
        return res;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值