SpringBoot中怎么使用邮箱发送验证码实现注册功能
本篇文章给大家分享的是有关SpringBoot中怎么使用邮箱发送验证码实现注册功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联服务项目包括西湖网站建设、西湖网站制作、西湖网页制作以及西湖网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,西湖网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到西湖省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
依赖:
使用SpringBoot Starter email组件;
依赖:
我这里是采用的第一种方式,简单易懂;
首先需要配置Email的各项参数,其中hostname、host、username、passsword(注意:此处的密码并不是登录的密码,而是邮箱开启smtp服务的令牌);我这里使用SpringBoot的yml配置文件,可以通过切换不同的环境:local/dev/test/pro/prod等等环境实现灵活配置,该配置为自定义配置;
我此处使用的是本人的163邮箱,在实际开发中需要换为公司的或项目专用邮箱;(注意:此种方式有缺陷,即为不能从外部进行灵活配置,只能写死配置文件,在实际使用上应该配置为数据字典,可以在外部直接进行灵活配置)
yml:
##Email配置email: host-name: smtp.163.com #服务地址,可以直接在web端登录,找到smtp服务看到,163邮箱默认开放25端口,可暂时不设置 authentication: username: xxx.163.com password: xxx #手动的设置令牌 form: mail: xxx@163.com #发送方,必须为你设置的username一致 name: elog #发送方显示的名称,可以随意设置 charset: UTF-8 #编码格式,一般设置为UTF-8
util:
package com.hisw.rest.utils;import com.hisw.common.exception.RRException;import org.apache.commons.mail.HtmlEmail;/** * @ClassName EmailCodeUtils * @Description TODO 邮箱验证码工具类 * @Author liwenju * @Date 2019/5/15 14:20 * @Version 1.0 **/public class EmailCodeUtils { /** * 生成6位随机验证码 * @return */ public static String getNumber(){ String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String code = ""; for(int i= 0;i<6;i++){ int index = (int)(Math.random()*str.length()); code+=str.charAt(index); } return code; } /** * 发送邮箱验证码 * @param receiverEmail * @param subject * @param msg */ public static void sendEmailCode(String EMAIL_HOST_NAME,String EMAIL_FORM_MAIL, String EMAIL_FORM_NAME,String EMAIL_AUTHENTICATION_USERNAME, String EMAIL_AUTHENTICATION_PASSWORD,String receiverEmail, String subject,String msg){ try{ HtmlEmail email = new HtmlEmail(); email.setHostName(EMAIL_HOST_NAME); email.setCharset("utf-8"); email.setFrom(EMAIL_FORM_MAIL,EMAIL_FORM_NAME); email.setAuthentication(EMAIL_AUTHENTICATION_USERNAME,EMAIL_AUTHENTICATION_PASSWORD); email.addTo(receiverEmail); email.setSubject(subject); email.setMsg(msg); email.send(); }catch (Exception ex){ throw new Exception("发送验证码失败,原因:"+ex.getMessage()); } }}
注意:在静态工具类的方法中,不可直接调用@Value(value="$xxx")来获取yml的配置文件的参数值,否则会获取不到值。故不在该util类中直获取。如下所示:
/** * 获取邮箱配置 */@Value(value = "${email.host-name}")public String EMAIL_HOST_NAME;
方法示例:
/** * 获取邮箱配置 */@Value(value = "${email.host-name}")public String EMAIL_HOST_NAME;@Value(value = "${email.authentication.username}")public String EMAIL_AUTHENTICATION_USERNAME;@Value(value = "${email.authentication.password}")public String EMAIL_AUTHENTICATION_PASSWORD;@Value(value = "${email.charset}")public String EMAIL_CHARSET;@Value(value = "${email.form.mail}")public String EMAIL_FORM_MAIL;@Value(value = "${email.form.name}")public String EMAIL_FORM_NAME;@Autowiredprivate SysUserDao sysUserDao;@Autowiredprivate SysUserTokenDao sysUserTokenDao;@Autowiredprivate redisUtils redisUtils;private Logger logger = LoggerFactory.getLogger(LoginUserServiceImpl.class);/** * 验证码过期时间60s */private Integer redisExpire = 60 * 1000;/*** * 根据邮箱验证用户 * @param account * @return */public SysUserEntity queryByEmail(String account){ SysUserEntity sysUserEntity = new SysUserEntity(); sysUserEntity.setEmail(account); return sysUserDao.selectOne(sysUserEntity);}/** * 判断该邮箱是否已存在 * @param email * @return */public Boolean checkEmail(String email){ //首先判断该用户是否已存在 if (StringUtils.isNotEmpty(email)){ EntityWrapper
说明:R.error (msg)/ throw new RRExcepion(msg)中,msg应该以enum或常量的方式组织起来;在发送验证码、校验验证码时,应该有一个工具类,验证一个邮箱在特定的短时间内只能发送或验证几次验证码,超过此限制,应该拒绝处理请求;
以上就是SpringBoot中怎么使用邮箱发送验证码实现注册功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
新闻标题:SpringBoot中怎么使用邮箱发送验证码实现注册功能
文章转载:http://cdiso.cn/article/pcggep.html