sms.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package services
  2. import (
  3. "hongze/hongze_api/utils"
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. "net/url"
  8. "net/http"
  9. )
  10. func SendSmsCode(mobile,ip string,codeType int,vcode string)bool {
  11. flag:=false
  12. tplId:=""
  13. switch codeType {
  14. case utils.REGISTER_CODE:
  15. tplId="206722"
  16. case utils.LOGIN_CODE:
  17. tplId="65692"
  18. }
  19. result,err:=sendSms(mobile,tplId,vcode)
  20. if err!=nil {
  21. fmt.Println("发送短信失败")
  22. return false
  23. }
  24. fmt.Println("result",string(result))
  25. var netReturn map[string]interface{}
  26. err=json.Unmarshal(result,&netReturn)
  27. if err!=nil {
  28. go utils.SendEmail("短信验证码发送失败","err:"+err.Error()+" result"+string(result), utils.EmailSendToUsers)
  29. flag=false
  30. }
  31. if netReturn["error_code"].(float64)==0{
  32. fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"])
  33. flag=true
  34. }else{
  35. go utils.SendEmail("短信验证码发送失败"," result"+string(result), utils.EmailSendToUsers)
  36. flag=false
  37. }
  38. return flag
  39. }
  40. func sendSms(mobile,tplId,code string)(rs []byte, err error) {
  41. var Url *url.URL
  42. apiURL := "http://v.juhe.cn/sms/send"
  43. //初始化参数
  44. param := url.Values{}
  45. //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
  46. param.Set("mobile", mobile) //接受短信的用户手机号码
  47. param.Set("tpl_id", tplId) //您申请的短信模板ID,根据实际情况修改
  48. param.Set("tpl_value", "#code#="+code) //您设置的模板变量,根据实际情况
  49. param.Set("key", utils.JhGnAppKey) //应用APPKEY(应用详细页查询)
  50. Url, err = url.Parse(apiURL)
  51. if err != nil {
  52. fmt.Printf("解析url错误:\r\n%v", err)
  53. return nil, err
  54. }
  55. //如果参数中有中文参数,这个方法会进行URLEncode
  56. Url.RawQuery = param.Encode()
  57. resp, err := http.Get(Url.String())
  58. if err != nil {
  59. fmt.Println("err:", err)
  60. return nil, err
  61. }
  62. defer resp.Body.Close()
  63. return ioutil.ReadAll(resp.Body)
  64. }