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学习——邮箱发送验证码注册用户相关推荐

  1. 邮箱发送验证码和短信发送验证码的学习笔记

    邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...

  2. 邮箱发送验证码工具类

    1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...

  3. java发送qq邮箱验证_JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)

    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...

  4. Spring Boot 整合163或者qq邮箱发送验证码

    前记 最近做的项目中注册功能要用到验证码,本来想用阿里云的短信服务,但是有点小贵,就另辟捷径,选择了用邮箱来发送验证码.记录一下整合过程,也希望能帮助一些有需要的人. 正文 1.Spring Boot ...

  5. SpringBoot实现邮箱发送验证码(QQ,163等同理)

    SpringBoot实现邮箱发送验证码 准备工作(依赖和yml文件的配置) 邮件的发送代码 补充 准备工作(依赖和yml文件的配置) 我们要远程操纵邮箱就需要获得每个邮箱的密钥: 1.先进入你的qq邮 ...

  6. 实战总结:邮箱发送验证码

    java邮箱发送验证码 目前项目中需要同时支持短信和邮箱验证,短信用的是腾讯云就不多说了,在此分享一下邮箱验证码发送. 首先,作为发送邮箱,需要开启POP3/SMTP/IMAP,登录邮箱–设置–账户– ...

  7. SpringBoot——邮箱发送验证码进行密码修改

    使用邮箱发送验证码进行改密验证,验证码需要分别发送到:(1)用户邮箱(2)缓存服务器 注:验证码发送到缓存服务器后,验证码保存一段时间,时间到期后,证明验证失败 1.设计前端页面 计划是:输入用户名( ...

  8. react-hooks + node 使用qq邮箱发送验证码,验证修改密码

    在平常,我们写登录注册react项目时,我们可能会考虑使用QQ邮箱发送验证码登录注册,或者使用QQ邮箱验证来修改密码,下面,我们就来使用QQ邮箱来简单发送个邮件. 1.当我们想在react项目中使用Q ...

  9. java邮箱发送验证码_java 邮箱发送验证码

    packagecom.*******.util.email;importorg.apache.commons.mail.EmailException;importorg.apache.commons. ...

最新文章

  1. Linux - SVN下载项目
  2. Android-Lifecycle超能解析-生命周期的那些事儿
  3. 一周内被程序员疯转5.6W次,最终被大厂封杀!
  4. Springboot 2.返回cookies信息的get接口开发 和 带cookis去请求
  5. 天刀服务器维护时间,6月3日服务器例行维护公告(已完成)
  6. oracle连接数达不到上限,Oracle超出最大连接数问题及解决(转)
  7. Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene【补坑】【Qt视图框架补坑】
  8. Pytorch:RuntimeError: DataLoader worker (pid 27) is killed by signal: Killed. Details are lost due
  9. 使用expect编写脚本
  10. pk8/pem秘钥转keystore格式
  11. (html+css)静态小米闪购主页仿制
  12. GoF设计模式——单例模式(C++实现)
  13. qq四国军旗2.1 beat03 builde018记牌器开发思路(四)
  14. 《Thinking in java》-学习笔记(9)
  15. 数据标注下半场:PLG模式下的增长飞轮丨曼孚科技
  16. vue实现密码显示隐藏、很简单易懂
  17. 什么是k8s(Kubernetes)
  18. 光伏电站的系统组成及工作原理
  19. Java工具类 计算某个时间距离当前时间相差多少天、多少小时、多少分、多少秒
  20. 怎样快速调整EDIUS 8中图片可见度

热门文章

  1. 18650锂电池镍带镀镍钢片(连接带)怎么拆,怎么容易焊锡
  2. ORB-SLAM3 单目地图初始化(终结篇)
  3. CMake下载地址及语法介绍
  4. SpringBoot项目中怎么保证提供的接口不会被调崩
  5. 287. **Find the Duplicate Number
  6. (转载)图像语义分割
  7. PHP多文字,二维码(动态、非动态)生成海报方式
  8. Superhuman AI for multiplayer poker
  9. Android 系统,Wifi连接后,显示wifi已连接但无法访问网络。
  10. 苹果高级副总裁:移除部分屏幕时间控制应用是因为安全和隐私