您好,对于腾讯云短信 GO SDK 的限制发送短信次数问题,可以通过设置验证码过期时间和发送间隔来实现。
以下是示例代码:
package main
import (
"fmt"
"time"
"github.com/qcloudsms/qcloudsms_go"
)
func main() {
appID := 123456789 // 自己的 AppID
appKey := "your_app_key" // 自己的 App Key
templateID := 100000 // 短信模板 ID
smsSign := "" // 短信签名内容
interval := 60 // 发送间隔(单位:秒)
expireTime := 300 // 验证码过期时间(单位:秒)
phoneNumber1 := "12345678901" // 手机号1
phoneNumber2 := "12345678902" // 手机号2
var lastSentTime1 time.Time = time.Now().Add(time.Duration(-interval) * time.Second)
var lastSentTime2 time.Time = time.Now().Add(time.Duration(-interval) * time.Second)
for {
if time.Since(lastSentTime1).Seconds() >= float64(interval) {
result, err := sendSMS(appID, appKey, []string{phoneNumber1}, templateID, smsSign)
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println(result)
lastSentTime1 = time.Now()
}
}
if time.Since(lastSentTime2).Seconds() >= float64(interval) {
result, err := sendSMS(appID, appKey, []string{phoneNumber2}, templateID, smsSign)
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println(result)
lastSentTime2 = time.Now()
}
}
time.Sleep(time.Second)
}
}
// 发送短信
func sendSMS(appID int, appKey string, phoneNumbers []string, templateID int, smsSign string) (result *qcloudsms.SendSMSResult, err error) {
// 短信发送器
sender := qcloudsms.NewSender(appID, appKey)
// 指定短信模板参数
params := []string{"123456"}
// 创建短信请求对象
req := qcloudsms.NewMultiSenderRequest(templateID, phoneNumbers, params)
// 设置签名内容(若使用默认签名,可以省略此步骤)
req.SetSign(smsSign)
// 发送短信
result, err = sender.MultiSend(req)
return result, err
}
以上示例代码通过 for 循环不断地发送短信,并在每次发送前判断上一次发送时间是否超过设定的间隔时间。如果未超过,则等待一段时间后再次尝试发送。
同时,对于验证码的有效期限制,可以在生成和验证验证码时记录当前时间,并在验证时判断当前时间与生成时间之差是否超过设定的过期时间。如果超过,则提示验证码已失效。