package aliyun import ( "encoding/json" "errors" "github.com/aliyun/alibaba-cloud-sdk-go/sdk" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" ) var Sms = sms{} type sms struct { client *sdk.Client } const () /* 发送验证短信 */ const ( regionId = "cn-hangzhou" accessKey = "LTAI4Fe9j26vbarEGVZ7Nany" accessKeySecret = "ysEYgqgpKtPbEJmHwdZ5psKsT15nel" SUCCESS = "SMS_243631426" FAIL = "SMS_243616481" ) func init() { c, err := sdk.NewClientWithAccessKey(regionId, accessKey, accessKeySecret) if err != nil { panic(err) } Sms.client = c } type AliResp struct { Message string RequestId string BizId string Code string } // SendMessage @Title 短信发送 func (s *sms) SendMessage(mobile, loginTemplateCode string, data map[string]string) error { marshal, _ := json.Marshal(&data) request := returnRequest(mobile, string(marshal), loginTemplateCode) response, err := s.client.ProcessCommonRequest(request) if err != nil { return errors.New(err.Error()) } if response.IsSuccess() { var p AliResp if err := json.Unmarshal(response.GetHttpContentBytes(), &p); err != nil { return errors.New(err.Error()) } if p.Message != "OK" { return errors.New("短信发送失败: " + p.Message) } return nil } else { return errors.New("短信发送失败") } } func returnRequest(mobile string, data string, templateCode string) *requests.CommonRequest { request := requests.NewCommonRequest() request.Method = "POST" request.Scheme = "https" request.Domain = "dysmsapi.aliyuncs.com" request.Version = "2017-05-25" request.ApiName = "SendSms" request.QueryParams["RegionId"] = regionId request.QueryParams["SignName"] = "瑞库客" request.QueryParams["TemplateCode"] = templateCode request.QueryParams["TemplateParam"] = data request.QueryParams["PhoneNumbers"] = mobile return request }