修改账号注册方法,以及邮箱协议对接

This commit is contained in:
zyj
2025-09-24 18:22:25 +08:00
parent 002419a7ed
commit 81ed379cf3
21 changed files with 1090 additions and 8 deletions

68
utils/firstmail.go Normal file
View File

@@ -0,0 +1,68 @@
package utils
import (
"encoding/json"
"fmt"
"go-account-register/config"
"strings"
"github.com/PuerkitoBio/goquery"
"github.com/go-resty/resty/v2"
)
type Firstmail struct {
}
type MailResponse struct {
Message string `json:"message"`
}
func (f *Firstmail) GetFirstmailMail(username, password string) (*MailResponse, error) {
client := resty.New()
appConfig, _ := config.LoadConfig()
url := fmt.Sprintf("%s?username=%s&password=%s",
appConfig.Firstmail.ApiUrl, username, password)
resp, err := client.R().
SetHeader("accept", "application/json").
SetHeader("X-API-KEY", appConfig.Firstmail.ApiToken).
Get(url)
if err != nil {
return nil, err
}
var data MailResponse
if err := json.Unmarshal(resp.Body(), &data); err != nil {
return nil, err
}
return &data, nil
}
func (f *Firstmail) GetMailCode(username, password string) string {
res, err := f.GetFirstmailMail(username, password)
if err != nil {
return "0"
}
htmlStr := res.Message
fmt.Println(htmlStr)
doc, err := goquery.NewDocumentFromReader(strings.NewReader(htmlStr))
if err != nil {
return "0"
}
code := ""
doc.Find("td.h1.black").Each(func(i int, s *goquery.Selection) {
if code == "" {
code = strings.TrimSpace(s.Text())
}
})
if code == "" {
return "0"
}
return code
}