golang的Gin框架设置邮箱发送验证码

.env文件的邮箱配置:https://www.cnblogs.com/youantianqin/p/18936653

 

这里以谷歌邮箱为例:

 

1.安装依赖:go get gopkg.in/gomail.v2

2.在项目目录新建/common/email.go,内容为:

image

 代码如下:

// common/email.go
package common

import (
"gopkg.in/gomail.v2"
"log"
"os"
"strconv"
)

func SendEmail(to, subject, body string) error {

port, _ := strconv.Atoi(os.Getenv("MAIL_PORT"))

// 配置 SMTP
d := gomail.NewDialer(
os.Getenv("MAIL_HOST"), // SMTP 服务器
port, // 端口
os.Getenv("MAIL_USERNAME"), // 发件邮箱
os.Getenv("MAIL_PASSWORD"), // 应用专用密码(不是邮箱密码!)
)

// 创建邮件
m := gomail.NewMessage()
m.SetAddressHeader("From", os.Getenv("MAIL_FROM_ADDRESS"), os.Getenv("MAIL_FROM_NAME"))//发件人
m.SetHeader("To", to) // 收件人
m.SetHeader("Subject", subject) // 邮件主题
m.SetBody("text/html", body) // 邮件内容(支持 HTML)

// 发送邮件
if err := d.DialAndSend(m); err != nil {
log.Printf("发送邮件失败: %v", err)
return err
}

return nil
}


3.调用案例:

image

 

// 发送邮件
err := common.SendEmail(接收邮箱, "验证码", "您的验证码是:"+code+",5分钟内有效")
if err != nil {
ctx.JSON(500, gin.H{
"code": -1,
"message": "验证码发送失败: " + err.Error(),
"timestamp": time.Now().Unix(),
})
return
}

4.编译后调用这个方法就能成功发送验证码

image

 

5.应用案例:用户中心的邮箱换绑,或者忘记密码时用邮箱找回密码,实际使用可先验证用户邮箱是否合法,生成的验证码存入redis等缓存,与用户输入的验证码进行校验

体验邮箱发送验证码->点击忘记密码,输入邮箱发送验证码即可查看到实际效果:https://nanzhi.vip/user

image

image

 

image

 

 

 

 

posted @ 2025-08-07 18:36  幽暗天琴  阅读(48)  评论(0)    收藏  举报