package ddsms import ( "encoding/json" "errors" "io/ioutil" "net/http" "net/url" "strings" //"fmt" ) type DDY struct { ApiKey string YzmUrl string TzUrl string } func (this *DDY) Init(apikey string) { this.ApiKey = apikey this.YzmUrl = "https://api.dingdongcloud.com/v2/sms/captcha/send.json" this.TzUrl = "https://api.dingdongcloud.com/v2/sms/notice/send.json" } //发送短信验证码 code验证码如:123456 返回true表示发送成功flase表示发送失败 func (this *DDY) SendYZM(umoblie string, tpt string, data map[string]string) (bool, error) { for k, v := range data { tpt = strings.Replace(tpt, "{"+k+"}", v, -1) } return this.send(this.YzmUrl, umoblie, tpt) } //发送通知 func (this *DDY) 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 this.send(this.TzUrl, umobleStr, tpt) } //发送短信 func (this *DDY) send(mUrl string, umoblie string, content string) (bool, error) { data_send_sms_yzm := url.Values{"apikey": {this.ApiKey}, "mobile": {umoblie}, "content": {content}} res, err := this.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 (this *DDY) 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 } var DefaultDDY DDY func init() { DefaultDDY = DDY{} }