精华内容
下载资源
问答
  • 邮箱验证码

    2018-11-30 13:44:09
    通过邮箱验证码实现各种验证。
  • 原标题:Java实现邮箱验证码声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。邮箱验证码一般能使用邮箱注册的账户,在进行...

    原标题:Java实现邮箱验证码

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

    邮箱验证码

    一般能使用邮箱注册的账户,在进行登录、注册或忘记密码等操作时,都能使用邮箱进行验证,所以邮箱验证码也使用得比较广泛,不过相对于短信验证码来说,邮箱验证码使用的少一些,因为现在是个人都有手机号码,但是不一定会有邮箱账号。

    使用邮箱来发送验证码,不需要像短信验证码那样调用短信服务API来发送验证码,但是需要有一个能够发送邮件的邮箱服务器或者使用第三方的邮箱,例如163、126、qq邮箱等。

    不管是邮箱服务器还是第三方的邮箱需要开启POP3、SMTP、IMAP服务,因为开启了这些服务后才能被第三方调用这个邮箱进行发送邮件。

    因为自己搭建邮箱服务器比较麻烦,所以我这里使用163的邮箱作为演示。

    1.首先得去邮箱里开启服务,登录后点击设置可以看到这些服务的选项:

    16b577d5026923b2231b5a9068d6715e.png

    2.设置服务,第一次设置的话,会需要短信验证,然后还会要求你设置一个密码:

    ba9fa3ac507c7e8f9aa95513d9de7de9.png

    3eeeebad18c3c7e40b5b962d168b1cb2.png

    进行短信验证:

    4c1215a377e23b11855844f43da17877.png

    设置密码:

    faf85ee8c396b7729d5063eec29e4903.png

    完成:

    bed20638be2fd89292f9d4a88f081178.png

    这个设置的密码也就是授权码要记住,发送邮件的时候需要用到这个授权码。

    然后我们来使用Java编写一个发送邮件的类,但是写这个代码之前你得先获得下图中的jar包,需要使用这些第三方的jar包来实现邮件的发送:

    6ab3b5f39a06fd388ab910ee26d4f930.png

    获得jar包后,把这些jar包都导入到web工程下的lib目录中:

    4b9fb5f4c264d609ae4fd7692d58f2cf.png

    有了这些jar包后,就可以开始编写代码了,我们先写一个简单的类来测试一下能否成功发送邮件,代码示例:

    40b7b16080cdae0cce539a4f3b28b270.png

    运行结果:

    a3d1bec6302c1f9cd5b50522fb854963.png

    如图,邮件可以正常的发送,并且收件人也能收到。

    关于邮件的验证码的问题:

    有时候邮件会发送的比较慢,甚至会发送不出去。所以用户在这种情况下就需要进行等待,最经典的就是那个圆圈的图标会一直在转圈,为了解决这种等待的问题,可以将验证码的发送请求存放到一个队列集合中,让它在后台进行发送,这样的话用户发送验证码时就不至于卡在当前页面里,示意图:

    责任编辑:

    展开全文
  • 标签:邮箱验证登录格式tar程序body用户名实现include*文章来源:https://blog.egsec.cn/archives/623 (我的主站)*本文将主要说明:PHP实现邮箱验证码验证功能...实现邮箱验证码功能有三个步骤:1、下载 PHPMailer ...

    标签:邮箱验证   登录   格式   tar   程序   body   用户名   实现   include

    *文章来源:https://blog.egsec.cn/archives/623  (我的主站)

    *本文将主要说明:PHP实现邮箱验证码验证功能,通过注册或登录向用户发送身份确认验证码,并通过判断输入的验证码是否正确做出登录判断。

    实现邮箱验证码功能有三个步骤:

    1、下载 PHPMailer 组件:https://github.com/PHPMailer/PHPMailer

    2、编写随机数(验证码)函数:

    3、编写调用核心组件程序:

    CharSet ="UTF-8"; //设定邮件编码

    $mail->SMTPDebug = 0; // 调试模式输出

    $mail->isSMTP(); // 使用SMTP

    $mail->Host = ‘smtp.qq.com‘; // SMTP服务器

    $mail->SMTPAuth = true; // 允许 SMTP 认证

    $mail->Username = ‘**********‘; // SMTP 用户名 即邮箱的用户名

    $mail->Password = ‘****************‘; // SMTP 密码 部分邮箱是授权码(例如163邮箱)

    $mail->SMTPSecure = ‘ssl‘; // 允许 TLS 或者ssl协议

    $mail->Port = 465; // 服务器端口 25 或者465 具体要看邮箱服务器支持

    $mail->setFrom(‘*********qq.com‘, ‘Mailer‘); //发件人(以QQ邮箱为例)

    $mail->addAddress($Email, ‘Joe‘); // 收件人($Email可以为变量传值,也可为固定值)

    //$mail->addAddress(‘ellen@example.com‘); // 可添加多个收件人

    $mail->addReplyTo(‘*********@qq.com‘, ‘info‘); //回复的时候回复给哪个邮箱 建议和发件人一致

    //$mail->addCC(‘cc@example.com‘); //抄送

    //$mail->addBCC(‘bcc@example.com‘); //密送

    //发送附件

    // $mail->addAttachment(‘../xy.zip‘); // 添加附件

    // $mail->addAttachment(‘../thumb-1.jpg‘, ‘new.jpg‘); // 发送附件并且重命名

    $yanzhen = codestr(); //此处为调用随机验证码函数(按照自己实际函数名改写)

    //Content

    $mail->isHTML(true); // 是否以HTML文档格式发送 发送后客户端可直接显示对应HTML内容

    $mail->Subject = ‘******身份登录验证‘;

    $mail->Body = ‘

    欢迎使用******

    您的身份验证码是:‘.$yanzhen.‘‘ . date(‘Y-m-d H:i:s‘);

    $mail->AltBody = ‘欢迎使用********,您的身份验证码是:‘.$yanzhen . date(‘Y-m-d H:i:s‘);

    $mail->send();

    echo ‘验证邮件发送成功,请注意查收!‘;

    } catch (Exception $e) {

    echo ‘邮件发送失败: ‘, $mail->ErrorInfo;

    }

    }

    ?>

    完成以上三个步骤即可实现向用户发送邮箱验证码的功能。

    但是,事情并没有结束,向用户发送验证码成功后,对用户提交的验证码如何判断输入的验证码是否正确呢?如果正确,达到身份确认效果,否则反之。请看下面实例:

    写实例之前,为了让大家更加明确程序中的文件名以及变量的作用,我们先规定:

    1、将调用核心组件程序 命名为 email.php

    2、规定验证码存放的变量名为 $yanzhen

    3、将 用户输入的验证码 的post表单值命名为 YanEmail

    4、规定使用POST提交表单

    5、规定接收POST值的页面 命名为 yanzhen.php

    规定了以上规则后,下面开始实例演示:

    首先是用户输入页面:

    登录

    邮箱验证页面

    //此处的$Email为接收用户的邮箱(这儿看自己需求,可以是数据库查询,也可以是手动输入,只需要最后赋值给$Email即可)

    //此处为导入email.php文件,自动向用户发送验证邮箱

    //此处为用户输入的验证码

    //此处为系统向用户发送的验证码(注意:这样写对系统不安全,按照自己需求更改吧),

    POST表单接收页面(yanzhen.php):

    到这就完成了PHP实现邮箱验证码功能的实现。其实没啥技术含量,就是可能逻辑上需要理清自己想要什么功能。

    文章中如有错误,请留言指出,个人技术能力有限,希望可以帮到你。

    转载请注明来源!谢谢!!!

    PHP实现邮箱验证码验证功能

    标签:邮箱验证   登录   格式   tar   程序   body   用户名   实现   include

    展开全文
  • 邮箱验证码源码

    2018-04-04 10:06:44
    邮箱验证码校验,适合新手使用。保存下来以后放到项目工具包中即可使用。
  • PHP发送邮箱验证码

    2020-09-11 17:26:02
    php发送qq邮箱验证码源代码,记得开启qq邮箱的 SMTP 服务,修改phpinfo.php文件。
  • 最近几天有人需要帮忙做一个关于发送验证码的功能,之前没有做过,于是我鼓捣一阵子,记录一下关于web项目中注册登录常用的手机验证码和邮箱验证码的发送。 作为一个演示项目,我没有使用任何框架,用了一个简单的...

    最新web/java/jsp实现发送手机短信验证码和邮箱验证码的注册登录功能(详细)

    最近几天有人需要帮忙做一个关于发送验证码的功能,之前没有做过,于是我鼓捣一阵子,记录一下关于web项目中注册登录常用的手机验证码和邮箱验证码的发送。

    作为一个演示项目,我没有使用任何框架,用了一个简单的jsp+Servlet,当然用boostrap美化了一下。代码带有注释,非常简单易懂。

    一、手机验证码

    由于手机短信属于增值业务,那么一般来说都是需要一些资金的。毕竟短信费是花钱的!所以一般来说都是调用第三方API来支持。

    1.1、API申请

    我们使用的API平台是:秒滴短信平台

    为啥用这个呢?因为他好?不一定,主要是因为他注册免费先送10块钱。做个测试功能足够了。

    废话不多说,网站自行注册然后登录:
    在这里插入图片描述

    然后在开发者信息里面获得你自己的AUTH_TOKEN:记录一下API需要的东西
    在这里插入图片描述

    1.2、在配置管理中新建一个模板

    这个模板就是发送验证码的模板。
    在这里插入图片描述

    1.3、自定义短信就要认证

    注意了!

    这个地方有个难处,就是必须认证以后才能发生自定义的短信内容。
    我要发自定义的,所以我要认证。认证是需要公司营业执照的。
    在这里插入图片描述
    (太麻烦?自己搞定不了?实际上很简单,私信我,我有妙招)

    看一下API接口要求:
    验证码通知短信接口说明

    主要的是这里:
    在这里插入图片描述

    反正完成了整个第三方平台的API接口以后。

    1.4、编写java手机短信发送代码

    我们就可以开始建项目,写代码了。
    新建项目什么的我都懒得说了,能做这个功能的这些都是小事情了。

    看一下我的项目结构吧:
    在这里插入图片描述
    直接上代码了,注释都写在里面了。
    为了方便理解,我们倒过来写。

    新建login.jsp:

    源码:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    	String path = request.getContextPath();
    	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
    			+ path + "/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>手机登录</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    
    <link rel="stylesheet" href="css/bootstrap.min.css" />
    <link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css" />
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    <style type="text/css">
    #login {
    	width: 450px;
    	height: 100px;
    	margin: 126px auto;
    }
    
    #btn {
    	margin-left: 100px;
    	margin-top: -25px;
    	width: 120px;
    	height: 25px;
    	font-size: 11px;
    }
    
    body {
    	background-color: #ecfcf9;
    }
    </style>
    </head>
    <script type="text/javascript">
    	var InterValObj; //timer变量,控制时间
    	var count = 60; //间隔函数,1秒执行
    	var curCount;//当前剩余秒数
    	function sendMessage() {
    		curCount = count;
    		$("#btn").attr("disabled", "true");
    		$("#btn").val(curCount + "秒后可重新发送");
    		InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次请求后台发送验证码 TODO
    	}
    	//timer处理函数
    	function SetRemainTime() {
    		if (curCount == 0) {
    			window.clearInterval(InterValObj);//停止计时器
    			$("#btn").removeAttr("disabled");//启用按钮
    			$("#btn").val("重新发送验证码");
    		} else {
    			curCount--;
    			$("#btn").val(curCount + "秒后可重新发送");
    		}
    	}
    </script>
    <body>
    	<div class="container">
    		<div id="login">
    			<fieldset>
    				<div id="legend" class="">
    					<legend class="">用户登录</legend>
    				</div>
    				<form class="form-horizontal" role="form">
    					<div class="form-group">
    						<label class="col-sm-2 control-label">手机号</label>
    						<div class="col-sm-5">
    							<input type="text" class="form-control" id="phone" name="phone"
    								placeholder="请输入您的手机号" required>
    						</div>
    					</div>
    					<div class="form-group">
    						<label class="col-sm-2 control-label">验证码</label>
    						<div class="col-sm-3">
    							<input type="code" class="form-control" id="code" name="code"
    								placeholder="验证码" required> <input
    								class="btn btn-default" id="btn" name="btn" value="发送验证码"
    								onclick="sendMessage()" />
    						</div>
    					</div>
    					<div class="form-group">
    						<div class="col-sm-offset-2 col-sm-10">
    							<button type="button" class="btn btn-success" id="lo">手机号登录</button>
    							<a href="register.jsp" class="btn btn-info">邮箱注册</a>
    						</div>
    					</div>
    				</form>
    			</fieldset>
    		</div>
    	</div>
    </body>
    <script type="text/javascript">
    	var sms = "";
    	$("#btn").click(function() {
    		var phone = $("#phone").val();
    		if (phone != "") {
    			$.ajax({
    				url : "sendSMS",  //发送请求 
    				type : "post",
    				data : {
    					"phone" : phone
    				},
    				success : function(result) {
    					sms = result;
    				}
    			});
    		} else {
    			alert("请输入手机号");
    			return false;
    		}
    	});
    	$("#lo").click(function() {
    		var code = $("#code").val();
    		if (code == "") {
    			alert("请输入验证码");
    		} else {
    			if (sms == code) {
    				window.location.href = "success.jsp";
    			} else {
    				alert("验证码错误");
    			}
    			;
    		}
    		;
    	});
    </script>
    </html>
    
    

    根据ajax,我们 点击发送以后,会url : “sendSMS”, 发送请求到 sendSMS。

    新建servlet类:

    sendSMS.java:

    package com.zout.controller;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.zout.util.GetMessageCode;
    
    /**
     * 
     *@class_name:SendSms
     *@comments:登录 -发送手机短信验证码
     *@param:phone
     *@return: code
     *@author:邹涛/Zoutao
     *@createtime:2019年2月23日
     */
    @WebServlet("/sendSMS")
    public class SendSms extends HttpServlet {
    	
    	 /** serialVersionUID*/
    	private static final long serialVersionUID = 1L;
    
    	@Override
    	public void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		String phone=req.getParameter("phone");
    		//根据获取到的手机号发送验证码
    		String code = GetMessageCode.getCode(phone); 
    		System.out.println(code);
    		resp.getWriter().print(code);
    	}
    }
    
    

    在servlet当中我们调用GetMessageCode.getCode的方法,来发送短信。

    新建GetMessageCode.java:

    源码:

    package com.zout.util;
    
    import java.net.URLEncoder
    import com.alibaba.fastjson.JSONObject;
    import com.zout.common.Config;
    import com.zout.common.HttpUtil;
    
    /**
     * 
     *@class_name:GetMessageCode
     *@comments:调用手机短信API
     *@param:phone
     *@return: String
     *@author:邹涛/Zoutao
     *@createtime:2019年2月22日
     */
    public class GetMessageCode {
    	
    	private static String operation = "/industrySMS/sendSMS";//对应的API地址
    	private static String accountSid = Config.ACCOUNT_SID;
    	private static String to = "17121192629"; //改由前台传入
    	private static String rod=smsCode();   //生成一个随机验证码
    	private static String smsContent = "【柒晓白网络科技】您的验证码:"+rod+",如非本人操作,请忽略此短信。";
    
    	//创建验证码
    	public static String smsCode(){
    		String random=(int)((Math.random()*9+1)*100000)+"";	
    		System.out.print("random验证码:"+random);
    		return random;
    	}
    	
    	//根据相应的手机号发送验证码
    	public static String getCode(String phone){
    		String tmpSmsContent = null;
    	    try{
    	      tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");
    	    }catch(Exception e){
    	    	e.getMessage();
    	    }
    	    
    	    String url = Config.BASE_URL + operation;
    	    String body = "accountSid=" + accountSid + "&to=" + phone + "&smsContent=" + tmpSmsContent
    	        + HttpUtil.createCommonParam();
    	    
    	    // 提交请求
    	    String result = HttpUtil.post(url, body);
    	    
    	    //(换行符) 剔除了平台无关性
    	    System.out.println("result:" + System.lineSeparator() + result);
    	    System.out.println(result.getClass());
    	    
    	    //字符串转json对象
    	    JSONObject jsonObject = JSONObject.parseObject(result); 
    	    String respCode = jsonObject.getString("respCode");
    	    System.out.println(respCode);
    	    
    		//反馈-00000状态码标识请求成功,
    		String defaultRespCode="00000";
    		if(defaultRespCode.equals(respCode)){
    			 return rod;
    		}else{
    			return defaultRespCode;		
    		}
    	}
    	
    }
    
    

    注意:
    在GetMessageCode类中,把smsContent改为你自己在平台上面建立的模板的样式,这里必须一致。

    还有json是用的:import com.alibaba.fastjson.JSONObject;
    阿里巴巴的jar包。

    新建Config配置类

    在com.zout.common包中新建Config.java:
    源码:

    package com.zout.common;
    
    /**
     * 
     *@class_name:Config
     *@comments:系统常量
     *@param:自主填写API的授权码等信息
     *@return: String
     *@author:邹涛/Zoutao
     *@createtime:2019年2月23日
     */
    public class Config
    {
    	
    	/**
    	 * url前半部分
    	 */
    	public static final String BASE_URL = "https://api.miaodiyun.com/20150822";
    
    	/**
    	 * 开发者注册后系统自动生成的账号,可在官网登录后查看-修改为自己的。
    	 */
    	public static final String ACCOUNT_SID = "b38529a662bd4你自己的800f140";
    
    	/**
    	 * 开发者注册后系统自动生成的TOKEN,可在官网登录后查看-修改为自己的。
    	 */
    	public static final String AUTH_TOKEN = "568ce19f6958467你自己的5080906341ae";
    
    	/**
    	 * 响应数据类型, JSON或XML
    	 */
    	public static final String RESP_DATA_TYPE = "json";
    }
    

    我标注的地方改成你自己的,(ACCOUNT_SID和AUTH_TOKEN)最好就改这两个就好了。去官网查询到自己的。上面有写。

    新建HttpUtil请求类

    在com.zout.common包中新建
    HttpUtil.java 源码:

    package com.zout.common;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.URL;
    import java.net.URLConnection;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import org.apache.commons.codec.digest.DigestUtils;
    
    /**
     * 
     *@class_name:HttpUtil
     *@comments:http请求工具
     *@param: 根据官网的API要求构建请求URL结构
     *@return: String结构
     *@author:邹涛/Zoutao
     *@createtime:2019年2月23日
     */
    public class HttpUtil
    {
    	/**
    	 * 构造通用参数timestamp、sig和respDataType
    	 * 
    	 * @return
    	 */
    	public static String createCommonParam()
    	{
    		// 时间戳
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    		String timestamp = sdf.format(new Date());
    
    		// 签名
    		String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);
    
    		return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;
    	}
    
    	/**
    	 * post请求
    	 * 
    	 * @param url
    	 *            功能和操作
    	 * @param body
    	 *            要post的数据
    	 * @return
    	 * @throws IOException
    	 */
    	public static String post(String url, String body)
    	{
    		System.out.println("url:" + System.lineSeparator() + url);
    		System.out.println("body:" + System.lineSeparator() + body);
    
    		String result = "";
    		try
    		{
    			OutputStreamWriter out = null;
    			BufferedReader in = null;
    			URL realUrl = new URL(url);
    			URLConnection conn = realUrl.openConnection();
    
    			// 设置连接参数
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			conn.setConnectTimeout(5000);
    			conn.setReadTimeout(20000);
    			conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    			// 提交数据
    			out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
    			out.write(body);
    			out.flush();
    
    			// 读取返回数据
    			in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
    			String line = "";
    			boolean firstLine = true; // 读第一行不加换行符
    			while ((line = in.readLine()) != null)
    			{
    				if (firstLine)
    				{
    					firstLine = false;
    				} else
    				{
    					result += System.lineSeparator();
    				}
    				result += line;
    			}
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    		return result;
    	}
    
    	/**
    	 * 回调测试工具方法
    	 * 
    	 * @param url
    	 * @param reqStr
    	 * @return
    	 */
    	public static String postHuiDiao(String url, String body)
    	{
    		String result = "";
    		try
    		{
    			OutputStreamWriter out = null;
    			BufferedReader in = null;
    			URL realUrl = new URL(url);
    			URLConnection conn = realUrl.openConnection();
    
    			// 设置连接参数
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			conn.setConnectTimeout(5000);
    			conn.setReadTimeout(20000);
    
    			// 提交数据
    			out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
    			out.write(body);
    			out.flush();
    
    			// 读取返回数据
    			in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
    			String line = "";
    			boolean firstLine = true; // 读第一行不加换行符
    			while ((line = in.readLine()) != null)
    			{
    				if (firstLine)
    				{
    					firstLine = false;
    				} else
    				{
    					result += System.lineSeparator();
    				}
    				result += line;
    			}
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    		return result;
    	}
    }
    

    这个实际上就是要构建上面所写的API的请求体的方式。
    必须按照人家官网的要求来,不然就接收不到你的短信发送请求。

    对了,顺便在建立两个jsp文件:分别是fail.jsp和success.jsp,里面没有啥内容,就是标志一个成功一个失败即可。

    上面就完成了整个手机短信发送的请求,于是我们在tomcat里面运行项目,看看:
    浏览器输入:http://localhost:8080/EmailAndPhone/

    手机验证码发送效果图:

    输入手机号:
    在这里插入图片描述点击发送。

    后台:
    在这里插入图片描述

    手机接收短信:
    在这里插入图片描述

    先输入错误的:
    在这里插入图片描述

    在输入正确的:

    在这里插入图片描述
    点击登录:
    在这里插入图片描述
    你可以在秒滴登录自己的账号,然后查看发送状态:
    在这里插入图片描述



    这就完成了一个手机验证码短信的发送过程。接下来是邮箱验证码的发送。
    (提醒:一个手机号码一小时之类不能重复请求4次,你可以换号码来测试,注意看后台返回状态即可。)

    二、邮箱验证码

    在163和qq邮箱发送邮件之间,QQ比较难一些,所我们采用QQ邮箱来做。

    2.1、开启POP3/SMTP协议

    做这些之前,先要去QQ邮箱里帐号设置要开启POP3/SMTP协议。
    在这里插入图片描述
    选择账户,然后找到下面的地方,开启:
    在这里插入图片描述

    开启的时候,会给你一个java邮箱的授权码,你记得记录一下。网易同样道理。
    比如我的:

    • 成功开启POP3/SMTP服务: prktbfsmxxxxxj
    • 成功开启IMAP/SMTP服务: ehqvnfayxxxxxdf

    由于java发送邮件这个功能比较简单,我们写一个java版和一个web版本来方便使用。

    2.2、java版发送邮件:

    在com.zout.util;包下新建一个Mail_java.java类来测试:
    需要注意一点就是,在QQ中要求 开启SSL证书加密,否则会失败。

    Mail_java.java:

    package com.zout.util;
    
    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import com.sun.mail.util.MailSSLSocketFactory;
    
    /**
     * JavaMail发送邮件: java版本-与web无关
     * 前提是QQ邮箱里帐号设置要开启POP3/SMTP协议
     * 
     * 
     */
    public class Mail_java {
    	public static void main(String[] args) throws Exception {
    		Properties prop = new Properties();
    		// 开启debug调试,以便在控制台查看
    		prop.setProperty("mail.debug", "true");
    		// 设置邮件服务器主机名
    		prop.setProperty("mail.host", "smtp.qq.com");
    		// 发送服务器需要身份验证
    		prop.setProperty("mail.smtp.auth", "true");
    		// 发送邮件协议名称
    		prop.setProperty("mail.transport.protocol", "smtp");
    		// 开启SSL加密,否则会失败
    		MailSSLSocketFactory sf = new MailSSLSocketFactory();
    		sf.setTrustAllHosts(true);
    		prop.put("mail.smtp.ssl.enable", "true");
    		prop.put("mail.smtp.ssl.socketFactory", sf);
    		// 创建session
    		Session session = Session.getInstance(prop);
    		// 通过session得到transport对象
    		Transport ts = session.getTransport();
    		// 连接邮件服务器:邮箱类型,帐号,POP3/SMTP协议授权码 163使用:smtp.163.com
    		ts.connect("smtp.qq.com", "你自己的QQ", "prktbfsmrjhvbajj");
    		// 创建邮件
    		Message message = createSimpleMail(session);
    		// 发送邮件
    		ts.sendMessage(message, message.getAllRecipients());
    		ts.close();
    	}
    
    	/**
    	 * @Method: createSimpleMail
    	 * @Description: 创建一封只包含文本的邮件
    	 */
    	public static MimeMessage createSimpleMail(Session session) throws Exception {
    			//  获取6为随机验证码
    			String[] letters = new String[] {
    					"q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m",
    					"A","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M",
    					"0","1","2","3","4","5","6","7","8","9"};
    			String stringBuilder ="";
    			for (int i = 0; i < 6; i++) {
    				stringBuilder = stringBuilder + letters[(int)Math.floor(Math.random()*letters.length)];
    			}
    		
    		// 创建邮件对象
    		MimeMessage message = new MimeMessage(session);
    		// 指明邮件的发件人
    		message.setFrom(new InternetAddress("你自己的@qq.com"));
    		// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
    		message.setRecipient(Message.RecipientType.TO, new InternetAddress("你自己的@qq.com"));
    		// 邮件的标题
    		message.setSubject("JavaMail测试");
    		// 邮件的文本内容
    	    message.setContent("欢迎您注册【柒晓白网络科技】,账号注册验证码为(一分钟有效):"+stringBuilder+",请勿回复此邮箱", "text/html;charset=UTF-8");
    		
    		// 返回创建好的邮件对象
    		return message;
    	}
    }
    

    以上需要导入jar包:
    javax.mail-1.6.1.jar

    把上面要求的地方改为你自己的。
    然后运行java文件。不要告诉你不会?

    效果图:在这里插入图片描述如果出现报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage

    解决办法: 导入activation-1.1.1.jar包。

    上面是一个简单的java版本,现在写一个web版本。

    2.3、web版邮箱发送

    同样的,我们先写jsp页面吧:

    新建一个register.jsp:

    <%@ page language="java" contentType="text/html; charset=utf-8"
    	pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <base href="<%=basePath%>">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>邮箱注册</title>
    <link rel="stylesheet" href="css/bootstrap.min.css" />
    <link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css" />
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    
    <style type="text/css">
    #register {
    	width: 450px;
    	height: 100px;
    	margin: 50px auto;
    }
    
    #btn {
    	margin-left: 197px;
    	margin-top: -24px;
    	width: 120px;
    	height: 25px;
    	font-size: 14px;
    	color: #7904c9
    }
    
    body {
    	background-color: #ecfcf9;
    }
    </style>
    
    
    <script type="text/javascript">
    
    $(function(){
    	$("#btn").click(function(){
    		if($("#email").val()){
    			$.ajax({
    				type:"POST",
    				url :"SendEmailServlet?random"+Math.random(),
    				data:{
    					email:$("#email").val(),
    				},
    				success:function(data){
    					alert("验证码发送成功,请注意查收。");
    				},
    			})
    		}else{
    			alert("邮箱发送失败");
    			$("#notice").html("请填写邮箱");
    			setTimeout(function(){
    				$("#notice").hide();
    			},1000);
    		}
    	}
    	);
    		//  判断用户是否可以注册
    		$("#submit").click(function() {
    			if ($("#email").val()) {
    				$("#RegistForm").submit();
    			} else { //  如果没有值
    				$("#notice").html("请填写完整信息");
    				setTimeout(function() {
    					$("#notice").hide();
    				}, 1000);
    			}
    		});
    	});
    </script>
    </head>
    <body>
    	<div class="container">
    		<div id="register">
    			<form class="form-horizontal" id="RegistForm" method="post"
    				action="${pageContext.request.contextPath}/RegistServlet">
    				<fieldset>
    					<div id="legend" class="">
    						<legend class="">用户注册</legend>
    					</div>
    					<div class="form-group">
    						<!-- Text input-->
    						<label class="col-sm-2 control-label">账号</label>
    						<div class="col-sm-5">
    							<input type="text" placeholder="请输入6位数账号..." class="form-control"
    								required name="username">
    						</div>
    					</div>
    					<div class="form-group">
    						<label class="col-sm-2 control-label">密码</label>
    						<div class="col-sm-5">
    							<input type="password" placeholder="请输入6位数密码..." required
    								class="form-control" name="password">
    						</div>
    					</div>
    					<div class="form-group">
    						<label class="col-sm-2 control-label">邮箱</label>
    						<div class="col-sm-5">
    							<input type="email" placeholder="请填写邮箱地址..." class="form-control"
    								id="email" name="email" required>
    						</div>
    					</div>
    					<div class="form-group">
    						<label class="col-sm-2 control-label">验证码</label>
    						<div class="col-sm-5">
    							<input type="text" name="code" id="code" placeholder="请输入邮箱的验证码"
    								class="form-control" required> 
    								<input type="button" name="btn"
    								class="btn btn-default" id="btn" value="发送验证码" />
    						</div>
    					</div>
    					<span id="notice" class="hide">请先完成邮箱验证</span><br />
    					<div class="form-group">
    						<div class="col-sm-offset-2 col-sm-10">
    							<a href="login.jsp" class="btn btn-success">返回登录</a> <input
    								class="btn btn-info" type="submit" id="submit" value="邮箱注册" />
    						</div>
    					</div>
    				</fieldset>
    			</form>
    		</div>
    	</div>
    </body>
    </html>
    

    根据上面,我们点击发送验证码的时候,会请求:SendEmailServlet。

    新建SendEmailServlet

    于是新建一个SendEmailServlet.java:

    package com.zout.controller;
    
    import java.io.IOException;
    import java.util.Properties;
    
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.MimeMessage;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.zout.util.JavaMailUtil;
    import com.zout.util.RandomUtil;
    import com.zout.util.htmlText;
    
     
    /**
     * 
     *@class_name:SendEmailServlet
     *@comments:注册- 发送邮箱验证码功能
     *@param:
     *@return: 
     *@author:邹涛/Zoutao
     *@createtime:2019年2月22日
     */
    
    @WebServlet("/SendEmailServlet")
    public class SendEmailServlet extends HttpServlet {
    	
    	private static final long serialVersionUID = 1L;
     
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
    			throws ServletException, IOException {
    		System.out.println("邮箱发送功能");
    		try {
    			String email = req.getParameter("email");
    			JavaMailUtil.receiveMailAccount = email; // 给用户输入的邮箱发送邮件
     
    			// 1、创建参数配置,用于连接邮箱服务器的参数配置
    			Properties props = new Properties();
    			// 开启debug调试
    			props.setProperty("mail.debug", "true");
    			// 发送服务器需要身份验证
    			props.setProperty("mail.smtp.auth", "true");
    			// 设置右键服务器的主机名
    			props.setProperty("mail.host", JavaMailUtil.emailSMTPHost);
    			// 发送邮件协议名称
    			props.setProperty("mail.transport.protocol", "smtp");
     
    			// 2、根据配置创建会话对象,用于和邮件服务器交互
    			Session session = Session.getInstance(props);
    			// 设置debug,可以查看详细的发送log
    			session.setDebug(true);
    			// 3、创建一封邮件
    			String code = RandomUtil.getRandom();
    			System.out.println("邮箱验证码:" + code);
    			String html = htmlText.html(code);
    			MimeMessage message = JavaMailUtil.creatMimeMessage(session, JavaMailUtil.emailAccount,
    					JavaMailUtil.receiveMailAccount, html);
     
    			// 4、根据session获取邮件传输对象
    			Transport transport = session.getTransport();
    			// 5、使用邮箱账号和密码连接邮箱服务器emailAccount必须与message中的发件人邮箱一致,否则报错
    			transport.connect(JavaMailUtil.emailAccount, JavaMailUtil.emailPassword);
    			// 6、发送邮件,发送所有收件人地址
    			transport.sendMessage(message, message.getAllRecipients());
    			// 7、关闭连接
    			transport.close();
    			//  写入session
    			req.getSession().setAttribute("code", code);
    		} catch (Exception e) {
    			e.printStackTrace();
    			req.getSession().setAttribute("error", "邮件发送失败");
    		}
    	}
    }
    
    

    需要用到servlet的jar包哟,你有tomcat就会自动导入进去。

    当中用到三个工具类,新建工具类。

    新建工具类JavaMailUtil

    在com.zout.util包下新建

    JavaMailUtil.java

    package com.zout.util;
    
    import java.io.IOException;
    import java.util.Date;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
     
    /**
     * 
     *@class_name:JavaMailUtil
     *@comments:定义邮箱发送配置接口
     *@param:web版本
     *@return: 
     *@author:邹涛/Zoutao
     *@createtime:2019年2月23日
     */
    public class JavaMailUtil {
     
    	// 发件人的邮箱-修改为自己的
    	public static String emailAccount = "你自己的@qq.com";
    	// 发件人邮箱授权码-修改为自己的
    	public static String emailPassword = "prktbf你自己vbajj";
    	// 发件人邮箱服务地址-修改为自己的
    	public static String emailSMTPHost = "smtp.qq.com";
    	//  收件人邮箱
    	public static String receiveMailAccount = "";
    	
    	
    	/**
    	 *  创建一封邮件(发件人、收件人、邮件内容)
    	 * @param session
    	 * @param sendMail
    	 * @param receiveMail
    	 * @param html
    	 * @return
    	 * @throws MessagingException
    	 * @throws IOException 
    	 * cc:抄送
    	 * Bcc:密送
    	 * To:发送
    	 */
    	public static  MimeMessage creatMimeMessage(Session session,String sendMail,String receiveMail,String html) throws MessagingException, IOException {
    		// 1、创建一封邮件对象
    		MimeMessage message = new MimeMessage(session);
    		// 2、From:发件人
    		message.setFrom(new InternetAddress(sendMail, "发件人昵称", "UTF-8"));
    		// 3、To:收件人(可以增加多个收件人:抄送或者密送)
    		message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "张三", "UTF-8"));
    		// 4、Subject:邮件主题
    		message.setSubject("邮箱验证","UTF-8");
    		// 5、Content:邮件正文(可以使用Html标签)
    		message.setContent(html,"text/html;charset=UTF-8");
    		// 6、设置发送时间
    		message.setSentDate(new Date());
    		// 7、保存设置
    		message.saveChanges();
    		// 8、将该邮件保存在本地
    		//OutputStream out = new FileOutputStream("D://MyEmail" + UUID.randomUUID().toString() + ".eml");
    		//message.writeTo(out);
    		//out.flush();
    		//out.close();
    		return message;
    	} 
    }
    

    把对应地方改为你自己的。

    新建RandomUtil工具类

    在com.zout.util包下新建RandomUtil;

    RandomUtil.java:

    package com.zout.util;
    
    /**
     * 
     *@class_name:RandomUtil
     *@comments:生成随机6位数验证码
     *@param:
     *@return: 
     *@author:邹涛/Zoutao
     *@createtime:2019年2月23日
     */
    public class RandomUtil {
    	public static void main(String[] args) {
    		// 控制台打印
    		System.out.println(RandomUtil.getRandom());
    	}
    	
    	//  生成6位数随机验证码
    	public static String getRandom() {
    		String[] letters = new String[] {
    				"q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m",
    				"A","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M",
    				"0","1","2","3","4","5","6","7","8","9"};
    		String code ="";
    		for (int i = 0; i < 6; i++) {
    			code = code + letters[(int)Math.floor(Math.random()*letters.length)];
    		}
    		return code;
    	}
    }
    

    新建内容htmlText类

    在com.zout.util包下新建

    htmlText.java:

    package com.zout.util;
    
    /**
     * 
     *@class_name:htmlText
     *@comments:定义邮件内容
     *@param:
     *@return: 
     *@author:邹涛/Zoutao
     *@createtime:2019年2月23日
     */
    public class htmlText {
    		//  返回页面Html携带的6位随机码
    		public static String html(String code) {
    			
    			String html = "Email地址验证<br/>"+ 
    			"这封邮件是由【柒晓白网络科技】发送的。<br/>"+
    			"你收到这封邮件是【柒晓白网络科技】进行新用户注册或者用户修改Email使用这个地址。<br/>"+
    			"账号激活声明<br/>"+
    			"请将下面的验证码输入到提示框即可:<h3 style='color:red;'>" + code + "</h3><br/>";
    			return html;
    		}
    	}
    
    

    这就完成了邮件发送的功能。

    然后我们还需要注册接收的servlet。
    因为在jsp当中,点击注册的时候,发请求:RegistServlet。
    新建一个servlet类:
    RegistServlet.java

    package com.zout.controller;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 
     *@class_name:RegistServlet
     *@comments: 注册请求处理
     *@param:验证码校验 
     *@return: jsp跳转
     *@author:邹涛/Zoutao
     *@createtime:2019年2月22日
     */
    @WebServlet("/RegistServlet")
    public class RegistServlet extends HttpServlet{
    	
    	private static final long serialVersionUID = 1L;
    	
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		
    		// 获取session中的验证码
    		String sessionCode = (String) req.getSession().getAttribute("code");
    		System.out.println(sessionCode);
    		
    		if(sessionCode != null) {
    			//  获取页面提交的验证码
    			String inputCode = req.getParameter("code");
    			System.out.println("页面提交的验证码:" + inputCode);
    			if (sessionCode.toLowerCase().equals(inputCode.toLowerCase())) {
    				String username = req.getParameter("username");
    				String password = req.getParameter("password");
    				System.out.println("页面提交:" + username+password);
    				//  验证成功,跳转成功页面
    				req.setAttribute("username", username);
    				req.getRequestDispatcher("/success.jsp").forward(req, resp);
    			}else {
    				//  验证失败
    				req.getRequestDispatcher("fail.jsp").forward(req, resp);
    			}
    		}else {
    			//  验证失败
    			req.getRequestDispatcher("fail.jsp").forward(req, resp);
    		}
    		//  移除session中的验证码
    		req.removeAttribute("code");
    	}
    }
    

    接收一下注册请求,然后跳转到指定页面。

    好了整个邮箱注册已经完成。开始运行我们的项目了。

    浏览器输入:http://localhost:8080/EmailAndPhone/register.jsp

    邮箱发送效果图:

    输入邮箱地址:

    带有校验,如果邮箱不是带有@符号,则出现错误提示。

    在这里插入图片描述
    点击发送验证码。

    后台:

    在这里插入图片描述邮箱里面查看验证码:
    在这里插入图片描述

    输入错误的验证码就会提示错误,输入正确的就会跳转到成功页面。
    在这里插入图片描述


    好了,上诉就是整个关于最新web/java/jsp实现发送手机短信验证码和邮箱验证码的注册登录功能的过程了。

    总结一下,其中需要导入对应的jar包(ali的json,java的email,activation-1.1.1.jar),boostrap的css,js,和juqery的js。这些都是网上可以下载的。你可以自己下载。

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

    boostrap组件:

    在这里插入图片描述

    最后贴出整个项目的源码包下载地址:源码

    没有积分,点个关注留下邮箱,我发给你。


    展开全文
  • 这篇文章给大家介绍Flask项目中实现短信验证码和邮箱验证码功能,具体内容如下所示: 一、发送邮箱验证码 1、使用QQ邮箱发送验证码 ①配置 开启pop3/smtp服务 2、应用 ①前端页面 ②config.py # 邮箱配置 # MAIL
  • 主要介绍了SpringBoot发送邮箱验证码功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 主要为大家详细介绍了springboot实现邮箱验证码功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 本文将为您描述SpringBoot发送邮箱验证码,具体操作方法:一.开启QQ邮箱服务(1)登陆QQ找到设置,点击账户(2)往下拉,开启POP3/SMTP服务和IMAP/SMTP服务当开启IMAP/SMTP会有一串密文密码,保存起来后面要用到二.spring ...

    本文将为您描述SpringBoot发送邮箱验证码,具体操作方法:一.开启QQ邮箱服务

    (1)登陆QQ找到设置,点击账户

    490584c97451c85be3e03285f1c9443a.png

    (2)往下拉,开启POP3/SMTP服务和IMAP/SMTP服务

    0fd47428f2b55198f936231cbb41d938.png

    当开启IMAP/SMTP会有一串密文密码,保存起来后面要用到

    二.spring boot配置邮箱服务

    在spring boot的配置文件application.yml中添加以下配置

    1 spring:

    2 mail:

    3 username: 1963342385@qq.com

    4 password: yqc...fchj

    5 host: smtp.qq.com

    password是在开启邮箱服务的时候得到的密文密码

    三.代码编写

    测试代码

    1 @RunWith(SpringRunner.class)

    2 @SpringBootTest

    3 public class ExchangeOfLearningPlatformApplicationTests {

    4 @Autowired

    5 JavaMailSenderImpl mailSender;

    6 private String emailServiceCode;

    7

    8 public void test(){

    9 emailServiceCode = "1234";

    10 SimpleMailMessage message = new SimpleMailMessage();

    11 message.setSubject("注册验证码");

    12 message.setText("注册验证码是:" + emailServiceCode);

    13 message.setFrom("1111111111@qq.com");

    14 mailSender.send(message);

    15 }

    16 }

    代码说明:

    创建一个简单的邮件对象:SimpleMailMessage message = new SimpleMailMessage();

    设置邮件标题:message.setSubject();

    设置文件内容:message.setText();

    设置收件邮箱:message.setFrom();发送邮件:mailSender.send(message);SpringBoot发送邮箱验证码就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

    本文地址:https://c.lanmit.com/bianchengkaifa/Java/13866.html

    展开全文
  • 邮箱验证码识别

    2021-01-08 16:30:51
    自动登录唯品会的时候要用邮箱验证码登录,记录一下邮箱部分 我用的126有些 #!/usr/bin/env python3 # -*- coding: utf-8 -*- from email.parser import Parser from email.header import decode_header from email...
  • 亲测可用 可以发送邮箱验证码
  • 邮箱验证码一般能使用邮箱注册的账户,在进行登录、注册或忘记密码等操作时,都能使用邮箱进行验证,所以邮箱验证码也使用得比较广泛,不过相对于短信验证码来说,邮箱验证码使用的少一些,因为现在是个人都有手机...
  • JAVA发送邮箱验证码

    2021-04-02 08:39:04
    JAVA发送邮箱验证码 在JAVA中实现邮箱获取验证码 邮箱的SMTP服务器,一般123邮箱的是smtp.123.com,qq邮箱为smtp.qq.com,163邮箱就是smtp.163.com 下面是QQ邮箱为例 首先我们要导入maven的依赖 <dependency&...
  • 发送邮箱验证码

    千次阅读 2018-03-16 10:31:36
    * 邮箱验证码 * * @param userCount 邮箱账号 * @param response */ @RequestMapping("vcode") public void vcode(String userCount, HttpServletResponse response) throws IOException { ...
  • Java实现邮箱验证码

    千次阅读 2017-12-15 16:33:39
    邮箱验证码一般能使用邮箱注册的账户,在进行登录、注册或忘记密码等操作时,都能使用邮箱进行验证,所以邮箱验证码也使用得比较广泛,不过相对于短信验证码来说,邮箱验证码使用的少一些,因为现在是个人都有手机...
  • Java邮箱验证码注册

    2019-09-27 16:29:39
    使用邮箱验证码实现用户注册早已不在是什么新鲜的事,但是对于我这些手(菜鸟)来说还是比较茫然的,所以我将我这第一次的经验总结分享出来,希望能够有助于茫然的你-----------》》》》 主要有一下步骤: 发送邮箱...
  • javaweb实现邮箱验证码

    2019-09-18 20:47:02
    实现邮箱验证码参考的博客(大佬们)邮箱验证的知识点cookie和验证码前端ajax和一些代码pom.xml的配置Mail工具类后台具体代码 参考的博客(大佬们) 六位随机验证码链接: 点击这里. cookie技术链接: 点击这里. 关键...
  • JAVA实现发送邮箱验证码

    万次阅读 多人点赞 2017-08-26 08:34:57
    JAVA实现发送邮箱验证码
  • nodeJs 实现邮箱验证码注册 功能设计 参考内容 nodemailer官网 QQ开启POP3/SMTP参考 1. 逻辑 用户输入邮箱,获取验证码 验证该邮件是否已经注册过 验证该邮件是否已经发送验证码,验证码是否过期。过期则重新...
  • 本篇主要描述“发送邮箱验证码、session校验”相关前(htmljs)后(java)台代码,业务逻辑示例,需要的朋友可以参考下
  • pom依赖导入org.apache.commonscommons-email1.5然后创建一个随机生成6位验证码的工具类package ...public class VerifyCodeUtil {//验证码生成范围//public static final String VERIFY_CODES = "23456...
  • .net邮箱注册 前端时间做项目,手机短信...纠结之后,用了邮箱验证. 直接上代码 /// <summary> /// 同步发送邮件 /// </summary> /// <param name="to">收件人邮箱地址</param> /// <p...
  • nodeMailer发送邮箱验证码 1、封装nodemailer对象 const nodemailer = require("nodemailer"); // 封装nodemailer对象 let nodeEmail = { config: { host: "smtp.qq.com", port: 587, secure: false, //...
  • 一、发送邮箱验证码 1、使用QQ邮箱发送验证码 ①配置 开启pop3/smtp服务 2、应用 ①前端页面 ②config.py # 邮箱配置 # MAIL_USE_TLS:端口号587 # MAIL_USE_SSL:端口号465 # QQ邮箱不支持非加密方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,506
精华内容 1,402
关键字:

邮箱验证码