gin学习——邮箱发送验证码注册用户
qq邮箱-设置-账户
安装
go get -u github.com/jordan-wright/email
go get -u github.com/garyburd/redigo/redis
dao/user_dao.go
func SendEmailValidate(em []string) (string,error) {e:=email.NewEmail()e.From = fmt.Sprintf("发件人笔名 <发件人邮箱>")e.To = em// 生成6位随机验证码rnd := rand.New(rand.NewSource(time.Now().UnixNano()))vCode := fmt.Sprintf("%06v", rnd.Int31n(1000000))t := time.Now().Format("2006-01-02 15:04:05")//设置文件发送的内容content := fmt.Sprintf(`<div><div>尊敬的%s,您好!</div><div style="padding: 8px 40px 8px 50px;"><p>您于 %s 提交的邮箱验证,本次验证码为<u><strong>%s</strong></u>,为了保证账号安全,验证码有效期为5分钟。请确认为本人操作,切勿向他人泄露,感谢您的理解与使用。</p></div><div><p>此邮箱为系统邮箱,请勿回复。</p></div></div>`, em[0], t, vCode)e.Text = []byte(content)//设置服务器相关的配置err := e.Send("smtp.qq.com:25", smtp.PlainAuth("", "发件人邮箱", "发件人邮箱授权码", "smtp.qq.com"))return vCode,err
}
controller/user_controller.go
// GetValidateCode
// @Title GetValidateCode
// @Description 发送邮箱验证码 并存入redis(5分钟有效时间)
// @Author hyy 2022-03-05 18:18:47
// @Param c type description
func GetValidateCode(c *gin.Context) {// 获取目的邮箱em := []string{c.Param("email")}vCode, err := dao.SendEmailValidate(em)if err != nil {log.Println(err)c.JSON(http.StatusBadRequest, gin.H{"status": 400,"msg": "验证码发送失败","ERROR-CONTROLLER": err.Error(),})return}// 验证码存入redis 并设置过期时间5分钟_, err = util.RedisCont.Do("set", "vCode", vCode)_, _ = util.RedisCont.Do("expire", "vCode", 300)if err != nil {log.Println(err.Error())c.JSON(http.StatusBadRequest, gin.H{"status": 400,"msg": "验证码存储失败","ERROR-CONTROLLER": err.Error(),})return}c.JSON(http.StatusOK, gin.H{"msg": "验证码发送成功","status": 200,"vCode": vCode,})return
}// ValidateEmailCode
// @Title ValidateEmailCode
// @Description 验证邮箱验证码,并注册用户。
// @Author hyy 2022-03-05 18:19:18
// @Param c type description
func ValidateEmailCode(c *gin.Context) {vCode := c.Param("vCode")var user model.Usererr := c.ShouldBindJSON(&user)if err != nil {log.Println(err.Error())c.JSON(http.StatusBadRequest, gin.H{"status": 400,"msg": "注册失败,json解析失败","ERROR-CONTROLLER": err.Error(),})return}// 默认用户权限为2if user.Level == 0 {user.Level = 2}user.CreatAt = time.Now().Format("2006-01-02 15:04:05")// 设置默认头像if user.HandPortrait == "" {user.HandPortrait = "https://gin-study-1308216693.cos.ap-nanjing.myqcloud.com/handportrait.png"}// 验证结构体字段if err := util.Validate.Struct(&user); err != nil {c.JSON(http.StatusBadRequest, gin.H{"status": 400,"msg": "注册失败,非法字段!","ERROR-VALIDATE": util.GetErr(err),})return}// 对密码进行加密user.Password = util.Md5Encrypt(user.Password)// 获取存储在redis中的验证码vCodeRaw, err := util.RedisCont.Do("get", "vCode")if err != nil {log.Println(err.Error())c.JSON(http.StatusBadRequest, gin.H{"status": 400,"msg": "Redis获取vCode失败","ERROR-CONTROLLER": err.Error(),})return}if string(vCodeRaw.([]byte)) != "" && vCode == string(vCodeRaw.([]byte)) {result := service.InsertUser(&user)if result["result"].(bool) {result["msg"] = "注册成功!"c.JSON(http.StatusOK, result)return} else {c.JSON(http.StatusBadRequest, result)return}} else {c.JSON(http.StatusBadRequest, gin.H{"status": 400,"msg": "验证码已失效",})return}
}
gin学习——邮箱发送验证码注册用户相关推荐
- 邮箱发送验证码和短信发送验证码的学习笔记
邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...
- 邮箱发送验证码工具类
1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...
- java发送qq邮箱验证_JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)
JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...
- Spring Boot 整合163或者qq邮箱发送验证码
前记 最近做的项目中注册功能要用到验证码,本来想用阿里云的短信服务,但是有点小贵,就另辟捷径,选择了用邮箱来发送验证码.记录一下整合过程,也希望能帮助一些有需要的人. 正文 1.Spring Boot ...
- SpringBoot实现邮箱发送验证码(QQ,163等同理)
SpringBoot实现邮箱发送验证码 准备工作(依赖和yml文件的配置) 邮件的发送代码 补充 准备工作(依赖和yml文件的配置) 我们要远程操纵邮箱就需要获得每个邮箱的密钥: 1.先进入你的qq邮 ...
- 实战总结:邮箱发送验证码
java邮箱发送验证码 目前项目中需要同时支持短信和邮箱验证,短信用的是腾讯云就不多说了,在此分享一下邮箱验证码发送. 首先,作为发送邮箱,需要开启POP3/SMTP/IMAP,登录邮箱–设置–账户– ...
- SpringBoot——邮箱发送验证码进行密码修改
使用邮箱发送验证码进行改密验证,验证码需要分别发送到:(1)用户邮箱(2)缓存服务器 注:验证码发送到缓存服务器后,验证码保存一段时间,时间到期后,证明验证失败 1.设计前端页面 计划是:输入用户名( ...
- react-hooks + node 使用qq邮箱发送验证码,验证修改密码
在平常,我们写登录注册react项目时,我们可能会考虑使用QQ邮箱发送验证码登录注册,或者使用QQ邮箱验证来修改密码,下面,我们就来使用QQ邮箱来简单发送个邮件. 1.当我们想在react项目中使用Q ...
- java邮箱发送验证码_java 邮箱发送验证码
packagecom.*******.util.email;importorg.apache.commons.mail.EmailException;importorg.apache.commons. ...
最新文章
- Linux - SVN下载项目
- Android-Lifecycle超能解析-生命周期的那些事儿
- 一周内被程序员疯转5.6W次,最终被大厂封杀!
- Springboot 2.返回cookies信息的get接口开发 和 带cookis去请求
- 天刀服务器维护时间,6月3日服务器例行维护公告(已完成)
- oracle连接数达不到上限,Oracle超出最大连接数问题及解决(转)
- Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene【补坑】【Qt视图框架补坑】
- Pytorch:RuntimeError: DataLoader worker (pid 27) is killed by signal: Killed. Details are lost due
- 使用expect编写脚本
- pk8/pem秘钥转keystore格式
- (html+css)静态小米闪购主页仿制
- GoF设计模式——单例模式(C++实现)
- qq四国军旗2.1 beat03 builde018记牌器开发思路(四)
- 《Thinking in java》-学习笔记(9)
- 数据标注下半场:PLG模式下的增长飞轮丨曼孚科技
- vue实现密码显示隐藏、很简单易懂
- 什么是k8s(Kubernetes)
- 光伏电站的系统组成及工作原理
- Java工具类 计算某个时间距离当前时间相差多少天、多少小时、多少分、多少秒
- 怎样快速调整EDIUS 8中图片可见度