package aliyun import ( "encoding/json" "fmt" dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v4/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "math/rand" "strings" "time" ) func SendSmsLogin(mobile string) (string, error) { captcha := generateCaptcha() err := send(mobile, "逸采", "SMS_478575808", fmt.Sprintf(`{"code":"%s"}`, captcha)) if err != nil { return "", err } return captcha, nil } func generateCaptcha() string { rand.Seed(time.Now().UnixNano()) captcha := rand.Intn(900000) + 100000 return fmt.Sprintf("%d", captcha) } func send(mobile, signName, templateCode, TemplateParam string) error { client, _err := CreateClient(tea.String("LTAI5tBqQqufN9SctTUGLYMn"), tea.String("Kj1t2pMEjo8Cgj4D0CwqLS6CDPgczV")) if _err != nil { return _err } sendSmsRequest := &dysmsapi20170525.SendSmsRequest{ PhoneNumbers: tea.String(mobile), SignName: tea.String(signName), TemplateCode: tea.String(templateCode), TemplateParam: tea.String(TemplateParam), } tryErr := func() (_e error) { defer func() { if r := tea.Recover(recover()); r != nil { _e = r } }() // 复制代码运行请自行打印 API 的返回值 msg, _err := client.SendSmsWithOptions(sendSmsRequest, &util.RuntimeOptions{}) fmt.Println(msg.String()) if _err != nil { return _err } return nil }() if tryErr != nil { var error = &tea.SDKError{} if _t, ok := tryErr.(*tea.SDKError); ok { error = _t } else { error.Message = tea.String(tryErr.Error()) } // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message fmt.Println(tea.StringValue(error.Message)) // 诊断地址 var data interface{} d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data))) d.Decode(&data) if m, ok := data.(map[string]interface{}); ok { recommend, _ := m["Recommend"] fmt.Println(recommend) } _, _err = util.AssertAsString(error.Message) if _err != nil { return _err } } return _err }