短信发送方法
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.8 KiB

  1. package sms
  2. import (
  3. "errors"
  4. "git.tetele.net/tgo/helper"
  5. dysmsapi "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi"
  6. "log"
  7. )
  8. /**
  9. * 阿里云短信
  10. * @accessKeyId 用来验证用户身份的keyId
  11. * @accessKeySecret 用来验证用户身份的secret
  12. * @signName 短信签名名称
  13. * @templateCode 短信模板CODE
  14. * @phoneNumbers 手机号多个用逗号隔开
  15. * @teplateParam 短信内容
  16. */
  17. func SendByALiYun(accessKeyId string, accessKeySecret string, phoneNumbers string, signName string, templateCode string, teplateParam string) (bool, error) {
  18. if accessKeyId == "" || accessKeySecret == "" || phoneNumbers == "" || signName == "" || templateCode == "" || teplateParam == "" {
  19. return false, errors.New("参数不全")
  20. }
  21. client, err := dysmsapi.NewClientWithAccessKey("cn-qingdao", accessKeyId, accessKeySecret)
  22. /* use STS Token
  23. client, err := dysmsapi.NewClientWithStsToken("cn-qingdao", "<your-access-key-id>", "<your-access-key-secret>", "<your-sts-token>")
  24. */
  25. request := dysmsapi.CreateSendSmsRequest()
  26. request.Scheme = "https"
  27. request.PhoneNumbers = phoneNumbers // 接收短信的手机号码
  28. request.SignName = signName // 短信签名名称
  29. request.TemplateCode = templateCode // 短信模板ID
  30. request.TemplateParam = teplateParam
  31. response, err := client.SendSms(request)
  32. if err != nil {
  33. log.Println("post err", err)
  34. return false, err
  35. }
  36. // var reply_data map[string]interface{}
  37. // err = json.Unmarshal(response, &reply_data)
  38. // if err != nil {
  39. // log.Println(string(response), err)
  40. // return false, err
  41. // }
  42. if helper.ToStr(response.Code) != "OK" {
  43. return false, errors.New("短信发送失败," + helper.ToStr(response.Message))
  44. }
  45. return true, nil
  46. }