package ddsms import ( "encoding/json" "errors" "io/ioutil" "net/http" "net/url" "strings" //"fmt" ) type dingdongyun struct { ApiKey string YzmUrl string TzUrl string } var DDY = dingdongyun{} func (that *dingdongyun) Init(apikey string) { that.ApiKey = apikey that.YzmUrl = "https://api.dingdongcloud.com/v2/sms/captcha/send.json" that.TzUrl = "https://api.dingdongcloud.com/v2/sms/notice/send.json" } // SendYZM 发送短信验证码 code验证码如:123456 返回true表示发送成功flase表示发送失败 func (that *dingdongyun) SendYZM(umoblie string, tpt string, data map[string]string) (bool, error) { for k, v := range data { tpt = strings.Replace(tpt, "{"+k+"}", v, -1) } return that.send(that.YzmUrl, umoblie, tpt) } // SendTz 发送通知 func (that *dingdongyun) SendTz(umoblie []string, tpt string, data map[string]string) (bool, error) { for k, v := range data { tpt = strings.Replace(tpt, "{"+k+"}", v, -1) } umobleStr := "" for i, v := range umoblie { if i == 0 { umobleStr = v continue } umobleStr += "," + v } return that.send(that.TzUrl, umobleStr, tpt) } //发送短信 func (that *dingdongyun) send(mUrl string, umoblie string, content string) (bool, error) { data_send_sms_yzm := url.Values{"apikey": {that.ApiKey}, "mobile": {umoblie}, "content": {content}} res, err := that.httpsPostForm(mUrl, data_send_sms_yzm) if err != nil && res == "" { return false, errors.New("连接错误") } var msg interface{} err1 := json.Unmarshal([]byte(res), &msg) if err1 != nil { return false, errors.New("json解析错误") } //fmt.Println(msg) resmsg := msg.(map[string]interface{}) rcode := int(resmsg["code"].(float64)) result := resmsg["msg"].(string) if rcode != 1 { return false, errors.New(result) } return true, nil } //调用url发送短信的连接 func (that *dingdongyun) httpsPostForm(url string, data url.Values) (string, error) { resp, err := http.PostForm(url, data) if err != nil { return "", err } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { return "", err } return string(body), nil }