golang的Gin框架设置邮箱发送验证码
.env文件的邮箱配置:https://www.cnblogs.com/youantianqin/p/18936653
这里以谷歌邮箱为例:
1.安装依赖:go get gopkg.in/gomail.v2
2.在项目目录新建/common/email.go,内容为:

代码如下:
// 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.调用案例:

// 发送邮件
err := common.SendEmail(接收邮箱, "验证码", "您的验证码是:"+code+",5分钟内有效")
if err != nil {
ctx.JSON(500, gin.H{
"code": -1,
"message": "验证码发送失败: " + err.Error(),
"timestamp": time.Now().Unix(),
})
return
}
4.编译后调用这个方法就能成功发送验证码

5.应用案例:用户中心的邮箱换绑,或者忘记密码时用邮箱找回密码,实际使用可先验证用户邮箱是否合法,生成的验证码存入redis等缓存,与用户输入的验证码进行校验
体验邮箱发送验证码->点击忘记密码,输入邮箱发送验证码即可查看到实际效果:https://nanzhi.vip/user



每天进步一点点

浙公网安备 33010602011771号