基于Golang Gin框架生成邮件验证码并校验服务完整实现

数据库模型 (model/email_code.go)
package model
import (
"time"
"gorm.io/gorm"
)
// EmailCode 邮箱验证码模型
type EmailCode struct {
gorm.Model
Email string `gorm:"size:100;not null;index"` // 邮箱地址
Code string `gorm:"size:10;not null"` // 验证码
ExpiresAt HTime `gorm:"not null"` // 过期时间
IsUsed bool `gorm:"default:false"` // 是否已使用
}
// HTime 自定义时间类型,用于处理数据库中的时间格式
type HTime struct {
time.Time
}
// GormDataType 实现 Gorm 的数据类型接口
func (t HTime) GormDataType() string {
return "datetime"
}
// Email SMTP配置模型
type Email struct {
Host string `json:"host"` // SMTP服务器地址
Port int `json:"port"` // 端口
Username string `json:"username"` // 用户名
Password string `json:"password"` // 密码
FormName string `json:"formName"` // 发件人名称
}
API接口实现 (api/mail.go)
package api
import (
"net/http"
"your_project/service"
"your_project/utils"
"github.com/gin-gonic/gin"
)
type MailApi struct {
mailService *service.MailService
}
func NewMailApi(mailService *service.MailService) *MailApi {
return &MailApi{mailService: