java发送邮箱及邮箱格式判断,一分钟发送时间限定

该博客介绍了一个前端HTML页面实现的邮箱输入验证功能,包括邮箱格式检查和字符验证。当用户输入正确的QQ邮箱并点击发送按钮时,原本会触发一个AJAX请求发送验证码到指定邮箱。后台部分,通过Java的EmailDemo类展示了如何使用SMTP协议发送邮件,但实际发送过程已被注释掉。控制器中,生成一个随机验证码并存储在session中,准备发送给用户。整个流程涵盖了前端交互和后台邮件服务的基本概念。
摘要由CSDN通过智能技术生成

先创建一个html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div style="background: aqua" >
    邮箱:<input type="text" name="email" id="email" class="email">    <button id="but" onclick="fromEmail()">发送邮件</button><br>
</div>
验证码:<input type="text" id="code">
</body>
<script src="/static/js/jquery-3.6.0.js"></script>
<script type="text/javascript">
    var btn = document.querySelector('button');
    var time = 60; // 定义剩下的秒数

    function fromEmail(){
        var email = $("#email").val()
        isEmail(email)
    }
    function isEmail(email){
        var index = email.indexOf("@");
        if(index==-1){
            alert("邮箱格式错误!");
        }else{
            var endStr = email.substring(index);
            if(endStr!="@qq.com"){
                alert("请使用qq邮箱!");
            }else{
                //判断用户名是否符合数字字母下划线组合
                var username = email.substring(0,index);
                var isRight = "发送成功!";//假设都符合
                for(var i=0;i<username.length;i++){
                    if(!isABC(username[i])){
                        alert("字符错误!");
                        break;
                    }
                }
                btn.addEventListener('click', function() {
                    btn.disabled = true;
                    var timer = setInterval(function() {
                        if (time == 0) {
                            // 清除定时器和复原按钮
                            clearInterval(timer);
                            btn.disabled = false;
                            btn.innerHTML = '发送邮件';
                            time = 60; //这个需要重新开始
                        } else {
                            btn.innerHTML = time + '秒可以重新发送';
                            time--;
                        }
                    }, 1000);
                })
                $.ajax({
                    url: "/code.action",
                    data: {"email" : email},
                    type: "post",
                    success: function () {
                        alert(isRight);
                    }
                })
            }
        }
    };
    function isABC(charrStr){
        //判断用户名是否符合数字字母下划线组合
        if(charrStr>="a" && charrStr<="z" || charrStr>="A" && charrStr<="Z" || charrStr>=0 && charrStr <=9 || charrStr=="_"){
            return true;
        }else{
            return false;
        }
    }
</script>
</html>

创建一个邮箱发送的类

package email1;

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

/**
 * kyf
 * 2022/7/20 12:04
 */
public class EmailDemo {
    public void fromEmail(String code,String email){
        //先登入QQ邮箱服务器

        //创建会话前设置参数
        Properties properties = new Properties();
        //设置key-vaule
        properties.setProperty("mail.host","smtp.qq.com");

        properties.setProperty("mail.smtp.auth", "true");

        //发送邮件采用的协议
        properties.setProperty("mail.transport.protocol","smtp");
        //会话
        Session session = Session.getDefaultInstance(properties);

        Transport ts =null;
        try {
            // 获取传输对象 发送邮件
            ts = session.getTransport();
            // 发送邮件前,校验账号密码(授权码)
            ts.connect("发送人邮箱","pop3协议授权码");

            //构建一封邮件
            MimeMessage message = new MimeMessage(session);

            //发件人
            message.setFrom(new InternetAddress("发件人邮箱"));
            //收件人
//            Message.RecipientType.TO 收件人
//            Message.RecipientType.CC 抄送
//            Message.RecipientType.BCC 暗送
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
//            message.setRecipient(Message.RecipientType.CC, new InternetAddress("2175902747@qq.com"));

            //主题
            message.setSubject("账号注册验证码");

            //正文
            message.setContent("您好,来自三峰博客您的六位验证码是:"+code+",请不要告诉别人30分钟有效!","text/html;charset=utf-8");

            //保存邮件
            message.saveChanges();

            //发送邮件
            ts.sendMessage(message, message.getAllRecipients());

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                ts.connect();
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }
}

创建一个controller,让前端可以调用邮件发送类

    @RequestMapping("/code")
    @ResponseBody
    public String code(HttpSession session,String email){
        int i = (int) (r.nextDouble()*1000000);
        String code = i>100000? i+"" :i+100000 +"";
        session.setAttribute("code",code);
        EmailDemo emailDemo = new EmailDemo();
        System.out.println(email+"==="+code);
//        emailDemo.fromEmail(code,email);
        return "发送成功!";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值