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

    2019-01-10 12:24:53
    使用163邮箱或qq邮箱向目的邮箱账号发送信息
  • Java邮箱验证码注册

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

    注册

    使用邮箱验证码实现用户注册早已不在是什么新鲜的事,但是对于我这些手(菜鸟)来说还是比较茫然的,所以我将我这第一次的经验总结分享出来,希望能够有助于茫然的你-----------》》》》

    主要有一下步骤:

    1. 发送邮箱验证码的工具类;
    2. 发送验证码的servlet类;
    3. 用户注册的servlet类;
    4. 用户登录的jsp页面;
    5. 需要的jar包;
    6. 邮箱账户的设置。

    然后让我们一步一步来看:

    1. 发送邮箱验证码的工具类

    
    import java.util.Random;
    
    import org.apache.commons.mail.HtmlEmail;
    
    public class SendEmailUtil {
    	public int sendEmail(String emailaddress) {
    		try {
    			Random random = new Random();
    			int code = random.nextInt(9000)+1000; 
    			HtmlEmail email = new HtmlEmail();// 不用更改
    			email.setHostName("smtp.qq.com");// 需要修改,126邮箱为smtp.126.com,163邮箱为163.smtp.com,QQ为smtp.qq.com
    			email.setCharset("UTF-8");
    			email.addTo(emailaddress);// 收件地址
    
    			email.setFrom("发件人邮箱", "发件人用户名");// 此处填邮箱地址和用户名,用户名可以任意填写
    			//hhhjkkkhhjklj(IMAP/SMTP服务)---这里需要改为你自己
    			email.setAuthentication("发件人邮箱", "bzqaboqcccmyfdeb");// 此处填写邮箱地址和客户端授权码
    
    			email.setSubject("邮件名称");// 此处填写邮件名,邮件名可任意填写
    			email.setMsg("尊敬的用户您好,您本次注册的验证码是:" + code);// 此处填写邮件内容
    
    			email.send();
    			return code;
    		} catch (Exception e) {
    			return 0;
    		}
    	}
    
    }
    
    

    2. 发送验证码的servlet类–重写doGet方法

    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		//接收邮箱
    		String email = request.getParameter("firstEmail");
    		//用户传递响应结果
    		String sendResult = "";
    		if(email!=null && !"".equals(email)) {
    			//发送邮箱验证码,并返回验证码
    			SendEmailUtil seu = new SendEmailUtil();
    			int code = seu.sendEmail(email);
    			
    			if(code != 0) {
    				//封装邮箱和验证码
    				request.getSession().setAttribute("code",code);
    				request.getSession().setAttribute("firstEmail", email);
    				
    				sendResult = "ok";
    			}else {
    				sendResult = "发送验证码失败";
    			}
    		}else {
    			sendResult = "请输入有效的邮箱地址";
    		}
    		//封装为json并对客户端响应
    		Gson gson = new Gson();
    		response.getWriter().print(gson.toJson(sendResult));
    	}
    

    3. 用户注册的servlet类–重写doGet方法

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//设置编码
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		
    		//获取表单内容
    		String name = request.getParameter("username");
    		String pwd = request.getParameter("pwd");
    		String repwd = request.getParameter("rePwd");
    		String email = request.getParameter("email");
    		String phone = request.getParameter("phone");
    		
    		//获取session域的验证码和邮箱
    		int code = (int) request.getSession().getAttribute("code");
    		String firstEmail = (String) request.getSession().getAttribute("firstEmail");
    		
    		//获取用户输入验证码
    		String vilidateCode = request.getParameter("eCode");
    		int vCode = 0;
    		if(vilidateCode!=null && !"".equals(vilidateCode)) {
    			vCode = Integer.parseInt(vilidateCode);
    		}
    		
    		//用于封装数据
    		User user = new User();
    		//返回结果
    		String result = "";
    		
    		//如果两次密码一致则封装到实体类
    		if(!repwd.equals(pwd)) {
    			result = "两次密码不一致";
    		}else{
    			//如果两次邮箱不一致,响应结果
    			if(!firstEmail.equals(email)) {
    				result = "请使用接收验证码的邮箱注册";
    			}else {
    				//判断验证码
    				if(vCode == code) {
    					
    					UserService userService = new UserServiceImpl();
    					int row = 0;
    					try {
    						if((name!=null&&!"".equals(name))&&(pwd!=null&&!"".equals(pwd))&&(phone!=null&&!"".equals(phone))) {
    							//都满足则封装数据并存储
    							user.setUname(name);
    							user.setUpwd(pwd);
    							user.setUphone(phone);
    							user.setUemail(email);
    							row = userService.register(user);
    						}
    					} catch (Exception e) {
    						//如果出现异常,重定向页面,由于没有数据传输,所以可以进行响应重定向
    						response.sendRedirect("error.html");
    					}
    					if(row == 1) {
    						//一切无误,返回ok
    						result = "ok";
    					}else {
    						result = "请输入正确的个人信息";
    					}
    				}else {
    					result = "验证码不正确";
    				}
    			}
    		}
    		//响应给客户
    		Gson gson = new Gson();
    		response.getWriter().print(gson.toJson(result));
    	}
    

    4. 用户登录的jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>使用邮箱验证码实现注册</title>
    <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    </head>
    <body>
    	<!--登录注册表-->
    	<div>
    		<form id="form">
    			<div class="flrg-1">
    				<h3>注册</h3>
    				<div>
    					<input type="text" class="in-1" placeholder="您的用户名"
    						name="username" id="username" onblur="checkNotName()"> <br>
    					<font color="red" id="usernameError"></font>
    				</div>
    				<div class="a">
    					<input type="password" class="in-1" placeholder="输入密码" name="pwd"
    						id="pwd" onblur="checkPwd()"> <br> <font
    						color="red" id="pwdError"></font>
    				</div>
    				<div class="a">
    					<input type="password" class="in-1" placeholder="再次确认密码"
    						name="repwd" id="rePwd" onblur="checkRePwd()"> <br>
    					<font color="red" id="rePwdError"></font>
    				</div>
    				<div class="a">
    					<input type="text" class="in-1" placeholder="输入手机号码" name="phone"
    						id="phone" onblur="checkPhone()"> <br> <font
    						color="red" id="phoneError"></font>
    				</div>
    				<div class="a">
    					<input type="email" class="in-1" placeholder="输入邮箱地址" name="email"
    						id="email" onblur="checkEmail()"> <br> <font
    						color="red" id="emailError"></font>
    				</div>
    				<div class="a">
    					<input type="text" class="in-1" placeholder="邮箱验证码" name="eCode"
    						id="eCode"> <br> <font color="red" id="eCodeError"></font>
    				</div>
    				<div class="a">
    					<input type="button" id="send" value="发送邮箱验证码">
    				</div>
    				<div class="a">
    					<input type="button" id="btn" style="text-align: center;"
    						value="注册">
    				</div>
    				<script>
                    $("#send").click(function(){
                		var email = $("#email").val();
                		var result = "ok";
                		$.ajax({
                			type:"post",
                			async:true,
                			url:"SendEmailVilidataCodeServlet",
                			data:"firstEmail="+email,
                			dataType:"json",
                			success:function(sendResult){
                				if(result==sendResult){
                					alert("已发送成功,注意查收");
                				}else{
                					$("#send").val("请重新发送");
                				}
                			},
                			error:function(){
                				alert("发送验证码失败");
                			}
                		})
                	});
                   </script>
    				<script>
    	                $("#btn").click(function(){
    	                	var username = $("#username").val();
    	            		var pwd = $("#pwd").val();
    	            		var rePwd = $("#rePwd").val();
    	            		var phone = $("#phone").val();
    	            		var eCode = $("#eCode").val();
    	            		var email = $("#email").val();
    	            		var result = "ok";
    	            		$.ajax({
    	            			type:"post",
    	            			async:true,
    	            			//最好使用绝对路径
    	            			url:"${pageContext.request.contextPath}/RegisterServlet",
    							data:"username="+username+"&pwd="+pwd+"&rePwd="+rePwd+"&eCode="+eCode+"&email="+email+"&phone="+phone,
    	            			dataType:"json",
    	            			success:function(resultFinal){
    	            				if(result==resultFinal){
    									alert(resultFinal);
    									window.location.href="login.jsp";
    								}else{
    									$("#eCodeError").html(resultFinal);
    								}
    	            			},
    	            			error:function(){
    	            				alert("注册失败");
    	            			}
    	            		})
    	            	});
                   </script>
    			</div>
    		</form>
    	</div>
    </body>
    </html>
    

    注册界面其实随便写一个就可以了,主要还是工具类的使用方法,和整体结构的思想,下面工具类所需要的各种jar包

    5. 需要的jar包

    以上是工具类所需要的jar包
    以上是工具类所需要的jar包

    至此我们代码部分已经结束

    6. 邮箱账户的设置。

    在浏览器登录QQ邮箱就可以设置:
    点击设置—>账户—>开启对应的功能(注意:记住授权码)
    在这里插入图片描述
    在这里插入图片描述
    至此完成所有步骤,
    最后,很感谢网上热心的朋友的文章和我的同桌。
    如果有何异议,希望不吝分享。谢谢您的浏览!

    展开全文
  • Java邮箱验证码工具类的使用和校验注册1. 步骤和工具类2. 邮件验证码注册demo3. 测试截图 1. 步骤和工具类 首先需要准备的东西 我这里以QQ邮箱为例。 点击 设置 ->账户,找到这个页面: 拿到授权码 并保存好...

    Java邮箱验证码工具类的使用和校验注册

    1. 步骤和工具类

    首先需要准备的东西 我这里以QQ邮箱为例。

    1. 点击 设置 ->账户,找到这个页面:

    image-20200616230717936

    1. 拿到授权码 并保存好:

    image-20200616230755407

    1. MailUtil 工具类:
    package com.mailtest.demo;
    
    import javax.mail.*;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Properties;
    
    public class MailUtil {
        public static void main(String[] args) {
            sendMail("邮件接收者@qq.com","发送的信息");
        }
    
        /**
         * 外网邮件发送
         *
         * @param to
         * @param code
         */
        public static void sendMail(String to, String code) {
            String myEmailAddr = "邮件发送者@qq.com";
            
            // Session对象:
            Properties props = new Properties();
            props.setProperty("mail.smtp.host", "smtp.qq.com"); // 设置主机地址
            // smtp.163.com
            // smtp.qq.com
            // smtp.sina.com
            props.setProperty("mail.smtp.auth", "true");// 认证
            // 2.产生一个用于邮件发送的Session对象
            Session session = Session.getInstance(props);
    
            // Message对象:
            Message message = new MimeMessage(session);
            // 设置发件人:
            try {
                // 4.设置消息的发送者
                Address fromAddr = new InternetAddress(myEmailAddr);
                message.setFrom(fromAddr);
    
                // 5.设置消息的接收者 nkpxcloxbtpxdjai
                Address toAddr = new InternetAddress(to);
                // TO 直接发送 CC抄送 BCC密送
                message.setRecipient(MimeMessage.RecipientType.TO, toAddr);
    
                // 6.设置主题
                message.setSubject("来自*****系统的验证码");
                // 7.设置正文
                message.setContent("这里是邮件的正文信息\n\n您的验证码为:" + code, "text/html;charset=UTF-8");
    
                // 8.准备发送,得到火箭
                Transport transport = session.getTransport("smtp");
                // 9.设置火箭的发射目标
                //transport.connect("smtp.163.com", "发送者@163.com", "biao********");
                transport.connect("smtp.qq.com", myEmailAddr, "jxzk*******");//jxzk..这个就是你的授权码
                // 10.发送
                transport.sendMessage(message, message.getAllRecipients());
    
                // Transport对象:
                // Transport.send(message);
            } catch (AddressException e) {
                e.printStackTrace();
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }
    

    2. 邮件验证码注册demo

    源码结构(使用 Maven 配置demo):

    image-20200617095450407

    • MailUtil.java 简单优化(只需要修改 myEmail16位邮箱授权码 即可)。
    package com.demo.utils;
    
    import javax.mail.Address;
    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 MailUtil {
        /**
         * 外网邮件发送
         *
         * @param to 收件人邮箱地址 收件人@xx.com
         * @param code 传入的验证码
         */
        public static void sendMail(String to, String code) {
            String myEmail = "QQ邮箱@qq.com";
            // Session对象:
            Properties props = new Properties();
            props.setProperty("mail.smtp.host", "smtp.qq.com"); // 设置主机地址
            // smtp.163.com
            // smtp.qq.com
            // smtp.sina.com
            props.setProperty("mail.smtp.auth", "true");// 认证
            // 2.产生一个用于邮件发送的Session对象
            Session session = Session.getInstance(props);
    
            // Message对象:
            Message message = new MimeMessage(session);
            // 设置发件人:
            try {
                // 4.设置消息的发送者
                Address fromAddr = new InternetAddress(myEmail);
                message.setFrom(fromAddr);
    
                // 5.设置消息的接收者 nkpxcloxbtpxdjai
                Address toAddr = new InternetAddress(to);
                // TO 直接发送 CC抄送 BCC密送
                message.setRecipient(MimeMessage.RecipientType.TO, toAddr);
    
                // 6.设置邮件标题
                message.setSubject("来自 " + myEmail + " 的安全验证码");
                // 7.设置正文
                message.setContent("这里是邮件的正文信息\n\n您的验证码为:" + code, "text/html;charset=UTF-8");
    
                // 8.准备发送,得到火箭
                Transport transport = session.getTransport("smtp");
                // 9.设置火箭的发射目标(第三个参数就是你的邮箱授权码)
                //transport.connect("smtp.163.com", "发送者@163.com", "abcdefghabcdefgh");
                transport.connect("smtp.qq.com", myEmail, "16位授权码");
                // 10.发送
                transport.sendMessage(message, message.getAllRecipients());
    
                // Transport对象:
                // Transport.send(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static String generateRandomCode(int length) {
            String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
            StringBuilder sb = new StringBuilder();
            while (sb.length() < length) {
                // 0 ~ s.length()-1
                int index = (new java.util.Random()).nextInt(s.length());
                // 处理重复字符:每个新的随机字符在 sb 中使用indexOf()查找下标值,-1为没找到,即不重复
                Character ch = s.charAt(index);
                if (sb.indexOf(ch.toString()) < 0) {
                    sb.append(ch);
                }
            }
            return sb.toString();
        }
    }
    
    • pom.xml 配置依赖
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.demo</groupId>
        <artifactId>mailTest</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <packaging>war</packaging>
    
        <dependencies>
            <!-- servlet-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- jsp -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- mail -->
            <dependency>
                <groupId>com.sun.mail</groupId>
                <artifactId>javax.mail</artifactId>
                <version>1.6.2</version>
            </dependency>
            <!-- log4j -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <!-- junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>RELEASE</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    
    </project>
    
    • register.jsp 简陋但极速的注册页
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>邮箱验证码测试</title>
        <script src="${pageContext.request.contextPath}/js/jquery-3.5.1.min.js"></script>
        <script>
            $(function () {
                sendMail();
            });
    
            // 异步请求发送邮件
            var code;
            function sendMail() {
                $("#sendMailBtn").click(function () {
                    var emailAddr = $("#emailAddr").val();
                    $.ajax({
                        type: "post",
                        url: "${pageContext.request.contextPath}/toSendMail",
                        async: false, //为了拿到验证码返回,需使用同步,ajax 执行完,才 return code
                        data:{
                            "email": emailAddr
                        },
                        success: function (data) {
                            console.log("收到:" + data);
                            code = data;
                        },
                    });
                    $('#mailSpan').text("√ 邮件已发送!");
                });
    
                return code;
            }
    
            // form表单根据邮件验证码输入是否一致,决定是否拦截提交
            function checkAll() {
                var code = $("input[name='mailCode']").val();
                var sysCode = sendMail();
                console.log(code + " === " + sysCode);
                return sysCode === code;
            }
        </script>
    </head>
    <body>
    
    <h2>Mailbox Verification:</h2>
    <br>
    <form action="${pageContext.request.contextPath}/register" method="post" onsubmit="return checkAll()">
        账号:<input type="text" name="username"/> <br><br>
        密码:<input type="password" name="password"/> <br><br>
        邮箱:<input type="email" name="email" id="emailAddr"/>
        <%-- 点击按钮进入异步请求,发送邮箱验证码 --%>
        <input type="button" value="发送验证码" id="sendMailBtn">
        <span id="mailSpan" style="color: green"></span><br><br>
        邮箱验证码:<input type="text" name="mailCode"> <br><br>
        <input type="submit" value="注册" />
    </form>
    
    </body>
    </html>
    
    
    • SendMailServlet.java 生成并相应 邮箱验证码 到页面
    package com.demo.controller;
    
    import com.demo.utils.MailUtil;
    
    import javax.servlet.annotation.WebServlet;
    import java.io.IOException;
    import java.util.logging.Logger;
    
    @WebServlet(name = "SendMailServlet", urlPatterns = "/toSendMail")
    public class SendMailServlet extends javax.servlet.http.HttpServlet {
        protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            String emailAddr = request.getParameter("email");
            String randomCode = MailUtil.generateRandomCode(5);
    
            MailUtil.sendMail(emailAddr, randomCode);
            // 响应异步请求(内容为邮箱验证码)
            response.getWriter().write(randomCode);
            Logger.getGlobal().info("邮件验证码已发送!");
        }
    
        protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            doPost(request, response);
        }
    }
    
    • RegisterServlet.java 就一句,没啥说的。
    package com.demo.controller;
    
    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 java.io.IOException;
    
    @WebServlet(name = "RegisterServlet", urlPatterns = "/register")
    public class RegisterServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("register success!!!");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
        }
    }
    
    • TestMail.java 测试类,你懂的。
    package com.demo.test;
    
    import com.demo.utils.MailUtil;
    import org.junit.Test;
    
    import static com.demo.utils.MailUtil.sendMail;
    
    public class TestMail {
        @Test
        public void test() {
            String emailAddr = "3288983638@qq.com";
            // 生成验证码,参数为 随机验证码位数
            String randomCode = MailUtil.generateRandomCode(5);
    
            sendMail(emailAddr, randomCode);
            //sendMail("邮件接收者@qq.com","发送的信息");
        }
    }
    

    3. 测试截图

    image-20200617100406306

    image-20200617100423920

    image-20200617100507503

    image-20200617100541261

    展开全文
  • java邮箱验证码发送

    2018-07-11 10:46:03
    message.setSubject("这是邮箱验证码"); //设置邮件正文 第二个参数是邮件发送的类型 message.setContent(content,"text/html;charset=UTF-8"); Transport.send(message); } } springBoot下的邮箱发送 ...

    1.maven项目里先引入需要的依赖

    		<dependency>
    			<groupId>javax.mail</groupId>
    			<artifactId>mail</artifactId>
    			<version>1.4.7</version>
    		</dependency>
    

    2.创建个邮箱工具类MailUtil

    public class MailUtil {
    	//邮箱服务器类型是qq邮箱
    	private static final String HOST = "smtp.qq.com";
    	//邮件发送源,该方法内所有的邮件都是email_source发出去的
    	private static final String EMAIL_SOURCE = "xxx@qq.com";
    	//邮箱里的POP3/SMTP等服务授权码
    	private static final String ACCESS_AUTHCODE = "xxxx";
    /**
     * 发送邮件
     */
      public static void send_mail(String email,String content) throws Exception {
            //创建连接对象 连接到邮件服务器
            Properties properties = new Properties();
            properties.put("mail.smtp.host", HOST);
            properties.put("mail.smtp.port", "25");
            properties.put("mail.smtp.auth", "true");
            Session session = Session.getInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(EMAIL_SOURCE,ACCESS_AUTHCODE);
                }
            });
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(EMAIL_SOURCE));
            
            //设置收件人
            message.setRecipient(Message.RecipientType.TO,new InternetAddress(email));
            message.setSubject("这是邮箱验证码");
            //设置邮件正文  第二个参数是邮件发送的类型
            message.setContent(content,"text/html;charset=UTF-8");
            Transport.send(message);
        }
    
    
    }
    
    1. springBoot下的邮箱发送

    –pom文件

    	<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-mail</artifactId>
    		</dependency>
    

    配置文件

    #网易企业邮箱
    mail.smtp.host=smtp.xxx.163.com
    mail.smtp.port=465
    mail.smtp.username=xxx@xxx.com
    #这个是邮箱的客户端授权码
    mail.smtp.password=xxxxx
    mail.smtp.timeout=50000
    mail.smtp.auth=true
    mail.smtp.starttls.enable=false
    mail.smtp.topic=邮箱验证
    

    方法

    	@Value("${mail.smtp.host}")
    	private String host;
    
    	@Value("${mail.smtp.topic}")
    	private String topic;
    
    	@Value("${mail.smtp.port}")
    	private int port;
    
    	@Value("${mail.smtp.password}")
    	private String password;
    
    	@Value("${mail.smtp.username}")
    	private String username;
    	
    private void send_mail(String email, String content) throws MessagingException {
    		   //创建连接对象 连接到邮件服务器
            Properties properties = new Properties();
            properties.setProperty("mail.host", host);
            properties.setProperty("mail.smtp.port", String.valueOf(port));
            properties.setProperty("mail.smtp.auth", "true");
            properties.setProperty("mail.transport.protocol", "smtp");
            properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            Session session = Session.getInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username,password);
                }
            });
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            
            //设置收件人
            message.setRecipient(Message.RecipientType.TO,new InternetAddress(email));
            message.setSubject(topic);
            //设置邮件正文  第二个参数是邮件发送的类型
            message.setContent(content,"text/html;charset=UTF-8");
            Transport.send(message);
    	}
    
    展开全文
  • 看了很多网上的有些自己都用不了,所以写一个自己以后留着看,因为只是做个验证,所以写的...import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message;...

    看了很多网上的有些自己都用不了,所以写一个自己以后留着看,因为只是做个验证,所以写的比较粗糙,不喜勿怪

    方法

    package com.igeek.hbue.util;
     
    import java.util.Date;
    import java.util.Properties;
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.servlet.http.HttpSession;
     
    public class MailUtil {
    	// 发件人 账号和密码
    	public static final String MY_EMAIL_ACCOUNT = "11@163.com";
    	public static final String MY_EMAIL_PASSWORD = "h";// 密码,是你自己的设置的授权码
    	
    	// SMTP服务器(这里用的163 SMTP服务器)
    	public static final String MEAIL_163_SMTP_HOST = "smtp.163.com";
    	public static final String SMTP_163_PORT = "25";// 端口号,这个是163使用到的;QQ的应该是465或者875
    	
    	
    	public static final  String email(String RECEIVE_EMAIL_ACCOUNT) throws AddressException, MessagingException {
    		Properties p = new Properties();
    		p.setProperty("mail.smtp.host", MEAIL_163_SMTP_HOST);
    		p.setProperty("mail.smtp.port", SMTP_163_PORT);
    		p.setProperty("mail.smtp.socketFactory.port", SMTP_163_PORT);
    		p.setProperty("mail.smtp.auth", "true");
    		p.setProperty("mail.smtp.socketFactory.class", "SSL_FACTORY");
    		
    		Session session = Session.getInstance(p, new Authenticator() {
    			// 设置认证账户信息
    			@Override
    			protected PasswordAuthentication getPasswordAuthentication() {
    				return new PasswordAuthentication(MY_EMAIL_ACCOUNT, MY_EMAIL_PASSWORD);
    			}
    		});
    		session.setDebug(true);
    		MimeMessage message = new MimeMessage(session);
    		// 发件人
    		message.setFrom(new InternetAddress(MY_EMAIL_ACCOUNT));
    		// 收件人和抄送人
    		message.setRecipients(Message.RecipientType.TO, RECEIVE_EMAIL_ACCOUNT);
        	message.setSubject("验证码");
    		
        	String  emailcode = (int)((Math.random() * 9 + 1) * 100000)+"";
        	message.setContent("<h1>欢迎注册成为“互联网+”废品回收新用户,您的验证码是:"+emailcode+"</h1>", "text/html;charset=UTF-8");
    		message.setSentDate(new Date());
    		message.saveChanges();
    	
    		
    		Transport.send(message);
    		return emailcode;
    	}
    	
    	
    	
    	
    }
    
    
    

    调用方法

      //发送邮件api
        @ApiOperation(value = "发送邮件", httpMethod = "POST", notes = "用户注册")
        @PostMapping("/email")
        public void sendEmail(@RequestParam("email") String email,HttpSession session) throws AddressException, MessagingException {
        	System.out.println(email);
        	String emailcode = MailUtil.email(email);
        	session.setAttribute(email, emailcode);
     
        }
        

    不通邮箱验证码不同

     //用户查询
        @ApiOperation(value = "用户查询", httpMethod = "GET", notes = "用户查询")
        @GetMapping("/getUserByid")
        public resultUserVo getByuserid(@RequestParam("userid")Integer userid,@RequestParam("emailcode")Integer emailcode,@RequestParam("email")String  email,HttpSession session) {
        	System.out.println(userid);
        	String code = (String) session.getAttribute(email);
        	System.out.println(email+"code:  "+code);
        	if(!emailcode.equals(code)) {
        		System.out.println("相等");
        		return ResultVoUtil.success(userService.getTuserByuserid(userid)) ;
        	}else {
        		System.out.println("不相等");
        		return ResultVoUtil.success("验证码不正确"); 
        	}
        }

     

    结果

     

    展开全文
  • 大家好,我是你们不熟悉的超厂长,每天2--3更,发布java小白教程 微信公众号:程序员PG 今天早上一直在考虑网上的邮箱注册是怎么注册的 一般流程就是你输入你的邮箱和设置你的密码,点击发送后,就会发给你一个...
  • 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&...
  • java163邮箱验证码

    2018-01-12 17:29:22
    压缩包包含:163邮箱设置步骤方式 java实现代码 邮箱验证发送
  • Java实现邮箱验证码

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

    千次阅读 2017-12-22 08:24:40
    接上文,接下来介绍下java实现邮箱验证码 第一步:加载邮件发送的 第二步:编写邮件发送的方法 public boolean send(String txt, String to, String subject) { Properties props = new Properties...
  • JAVA实现发送邮箱验证码

    万次阅读 多人点赞 2017-08-26 08:34:57
    JAVA实现发送邮箱验证码
  • java实现邮箱验证码所需的jar包,用java代码给指定的邮箱发送邮件
  • 本篇主要描述“发送邮箱验证码、session校验”相关前(htmljs)后(java)台代码,业务逻辑示例,需要的朋友可以参考下
  • java发送邮箱验证码

    2019-03-05 22:11:00
    //邮箱验证码 public static void sendEmail(String emailaddress,String code){ // 不要使用SimpleEmail,会出现乱码问题 HtmlEmail email = new HtmlEmail(); try { // 这里是SMTP发送服务器的名字:,...
  • Java邮箱发送验证码

    2019-08-08 10:49:29
    第二步,设置发件人邮箱及授权码(授权码是在邮箱设置里面自己设置的)。 //发送人的邮箱为自己的,用户名可以随便填 //XXXXXX@126.com是邮箱,XXXX是用户名 htmlEmail . setFrom ( "XXXXXX@126.com" , "XXXX" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 486
精华内容 194
关键字:

java邮箱验证码

java 订阅